应用程序服务器方法的参数问题?(50分)

N

netkk

Unregistered / Unconfirmed
GUEST, unregistred user!
在SERVER中新建一个方法,
目的是要在CLIENT调用时传递一个STRING和一个INTEGER;
并从SERVER回传相同类型的两个结果。
s:string;
i:integer;
如:在CLIENT --- DCOMC1.Appserver.getsample(s,i)
SERVER中方法getsample的参数为in,out
我发现在SERVER的方法设置参数时,只能用 OLEVARIANT* 的类型。
有什么方法可用 string 或 integer 作为传递的参数类型。
 
OLEVariant好象包含了所有的类型。
 
将 string 转为 PChar : PChar(string);
将 integer 转为 ^Integer : @Integer;
 
OLEVARIANT* ?
可以转换吧!VAROF。。。的
不知OOPSWARE的办法可行不可行,我得试试,
 
是啊,OLEVariant应该是可以转换成任何类型的,
不过好像和Variant不太一样,赋值时可能会有些类型转换的.
When a Variant is assigned to an OleVariant, incompatible types are converted to their compatible counterparts. For example, if a variant containing an AnsiString is assigned to an OleVariant, the AnsiString becomes a WideString.
 
如果是in, out的话只支持指针类型,
如需要指定string(在COM中为WideString类型)可以选择 BSTR类型,并在BSTR后手
工加"*"号,表示指向BSTR的指针;同样如表示Integer类型,则可以选择Int类型
加"*"号。
 
参照 huangshen 的方法做没错,但不要用OopsWare的PChar方法(指针无效)。
 
接受答案了.
 
顶部