請問怎樣傳遞結構到客戶端。 |
答題得分者是:speedup
|
DKSoftCHS
一般會員 發表:5 回覆:13 積分:3 註冊:2004-07-24 發送簡訊給我 |
在中間層和客戶層都定義一結構
type
TSoftInfo = record
FName: shortstring; //軟件名
FVer: shortstring; //版本
FUpdateTime: TDateTime; //更新時間
end; 在中間層定義一函數
procedure TFRDM_BASE.GetSoftInfo(var SoftStruc: OleVariant);
var
SoftInfo: TSoftInfo;
ADataSet: TAdoDataSet;
begin
ADataSet := TADODataSet.Create(Self);
ADataSet.Connection := Self.DbConfigConnection;
ADataSet.CommandText := 'SELECT * FROM SoftInfo';
ADataSet.Open;
SoftInfo.FName := ADataSet.FieldByName('FName').AsString;
SoftInfo.FVer := ADataSet.FieldByName('FVer').AsString;
SoftInfo.FUpdateTime := ADataSet.FieldByName('FUpdateTime').AsDateTime;
ADataSet.Close;
ADataSet.Free;
SoftStruc := SoftInfo; //這一句編譯不過去,說類型不相配。
end;
|
speedup
資深會員 發表:19 回覆:259 積分:280 註冊:2003-07-04 發送簡訊給我 |
首先使用DCOM/COM+,在Interface宣告的方法中參數型態不能為自訂Record或Class類別,頂多讓你用OleVariant
若使用Olevariant傳遞請記的要額外撰寫包裝/解包裝的程式碼
引言://客戶層撰寫以下程式碼解開OleVariantprocedure TFRDM_BASE.GetSoftInfo(var SoftStruc: OleVariant); var SoftInfo: TSoftInfo; ADataSet: TAdoDataSet; begin ADataSet := TADODataSet.Create(Self); ADataSet.Connection := Self.DbConfigConnection; ADataSet.CommandText := 'SELECT * FROM SoftInfo'; ADataSet.Open; SoftInfo.FName := ADataSet.FieldByName('FName').AsString; SoftInfo.FVer := ADataSet.FieldByName('FVer').AsString; SoftInfo.FUpdateTime := ADataSet.FieldByName('FUpdateTime').AsDateTime; ADataSet.Close; ADataSet.Free; //SoftStruc := SoftInfo; //这一句编译不过去,说类型不相配。 //改為 SoftStruc := VarArrayOf([SoftInfo.Fname,SoftInfo.FVer,SoftInfo.FUpdateTime]); end; XXX.AppServer.GetSoftInfo(V); SoftInfo.FName := V[0]; SoftInfo.FVer := V[1]; SoftInfo.FUpdateTime := V[2];混心雜欲 棄修身~唉
------
唉~ |
DKSoftCHS
一般會員 發表:5 回覆:13 積分:3 註冊:2004-07-24 發送簡訊給我 |
引言: 首先使用DCOM/COM ,在Interface宣告的方法中參數型態不能為自訂Record或Class類別,頂多讓你用OleVariant 若使用Olevariant傳遞請記的要額外撰寫包裝/解包裝的程式碼谢谢您的回答,我后来把他改成传递字符串的方法了!但还是一样要谢谢您的解答引言://客戶層撰寫以下程式碼解開OleVariantprocedure TFRDM_BASE.GetSoftInfo(var SoftStruc: OleVariant); var SoftInfo: TSoftInfo; ADataSet: TAdoDataSet; begin ADataSet := TADODataSet.Create(Self); ADataSet.Connection := Self.DbConfigConnection; ADataSet.CommandText := 'SELECT * FROM SoftInfo'; ADataSet.Open; SoftInfo.FName := ADataSet.FieldByName('FName').AsString; SoftInfo.FVer := ADataSet.FieldByName('FVer').AsString; SoftInfo.FUpdateTime := ADataSet.FieldByName('FUpdateTime').AsDateTime; ADataSet.Close; ADataSet.Free; //SoftStruc := SoftInfo; //这一句编译不过去,说类型不相配。 //改為 SoftStruc := VarArrayOf([SoftInfo.Fname,SoftInfo.FVer,SoftInfo.FUpdateTime]); end;XXX.AppServer.GetSoftInfo(V); SoftInfo.FName := V[0]; SoftInfo.FVer := V[1]; SoftInfo.FUpdateTime := V[2];混心雜欲 棄修身~唉 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |