全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1289
推到 Plurk!
推到 Facebook!

請問怎樣傳遞結構到客戶端。

答題得分者是:speedup
DKSoftCHS
一般會員


發表:5
回覆:13
積分:3
註冊:2004-07-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-17 13:54:06 IP:218.14.xxx.xxx 未訂閱
在中間層和客戶層都定義一結構 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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-17 14:23:43 IP:218.168.xxx.xxx 未訂閱
首先使用DCOM/COM+,在Interface宣告的方法中參數型態不能為自訂Record或Class類別,頂多讓你用OleVariant 若使用Olevariant傳遞請記的要額外撰寫包裝/解包裝的程式碼
引言:
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;  //这一句编译不过去,说类型不相配。
  
  //改為
  SoftStruc := VarArrayOf([SoftInfo.Fname,SoftInfo.FVer,SoftInfo.FUpdateTime]);    end;
//客戶層撰寫以下程式碼解開OleVariant
  XXX.AppServer.GetSoftInfo(V); 
  SoftInfo.FName := V[0];
  SoftInfo.FVer :=  V[1];
  SoftInfo.FUpdateTime := V[2];
混心雜欲 棄修身~唉
------
唉~
DKSoftCHS
一般會員


發表:5
回覆:13
積分:3
註冊:2004-07-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-17 18:43:32 IP:218.14.xxx.xxx 未訂閱
引言: 首先使用DCOM/COM ,在Interface宣告的方法中參數型態不能為自訂Record或Class類別,頂多讓你用OleVariant 若使用Olevariant傳遞請記的要額外撰寫包裝/解包裝的程式碼
引言:
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;  //这一句编译不过去,说类型不相配。
  
  //改為
  SoftStruc := VarArrayOf([SoftInfo.Fname,SoftInfo.FVer,SoftInfo.FUpdateTime]);    end;
//客戶層撰寫以下程式碼解開OleVariant
  XXX.AppServer.GetSoftInfo(V); 
  SoftInfo.FName := V[0];
  SoftInfo.FVer :=  V[1];
  SoftInfo.FUpdateTime := V[2];
混心雜欲 棄修身~唉
谢谢您的回答,我后来把他改成传递字符串的方法了!但还是一样要谢谢您的解答
系統時間:2024-04-19 2:18:47
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!