提示:提问和回答别人的问题均可赢得积分
此问题已经被浏览12次,收藏:0次. 所属类别:[
其他]
问题:三层中接口参数传值的问题?
我想通过接口的参数给服务器传TADOStoredProc或TObjectList或TStringList对象,不知道能否实现?
提问时间:
2006-9-16 9:27:04 回答次数:
(8) 提问人:
软界网友 我来回答
回答(1)
怎样实现呢?我试用OleVariant来装载它们,可是不行啊
回答(2)
旺仔哥哥的回答真簡單﹗可以的﹐又沒說明怎樣做﹗﹖
回答(3)
Function NegToZero(Value: Integer): Integer;
begin
If Value < 0 then Result := 0
else Result := Value
end;
//將TStrings字符串數組轉換成 OleVariant類型
Function StrsToVariant(strs: TStrings): OleVariant;
var I: Integer;
ParamStrs: OleVariant;
begin
ParamStrs := VarArrayCreate([0, NegToZero( strs.count-1)],VarOleStr);
For I := 0 to strs.Count-1 do
ParamStrs[I] := strs.Strings[I];
Result := ParamStrs;
end;
//傳遞后使用示例
If not varIsNull(ParamStrs) and VarIsArray(ParamStrs) then
begin
For I:=0 to VarArrayHighBound(ParamStrs,1) do
begin
.... := ParamStrs[I];
回答(4)
多谢Bes96261(秋水孤鶩) 提供的例子
但我主要是想实现传TADOStoredProc,有没有传TADOStoredProc的例子呢?
好象听说类也可以传,哪位大哥有这方面的例子?
回答(5)
類的內容本身是不能傳的﹐它的名稱只是一個指向地址的指針﹐而DELPHI并不提供將類進行直接存儲與讀取功能 (不同于設計時的Form文件)
在三層或多層中你只能傳實際值﹐而不是客戶端的一個指針(中間層哪知道這個指針是什么東東來的)﹐然后由服務器根據所傳遞的值再在自身的機器內存中生成一個類實例(控件)
回答(6)
如果你最終的目的是獲取數據包﹐你可以﹕
在中間層返回TDataSetProvider.Data; //這是它所指向的DataSet內的的數據
在客戶端用TClientDataSet﹐對它的Data直接賦值即可