大家都知道COM组件支等事件、方法、属性等。
但COM的很多参数类型和Delphi或其它语言的数据类型都不一样。
比如:delphi中的boolean 在COM中需要用VARIANT_BOOL(WordBool)代替。
delphi中的string 在COM中需要用BSTR(widestring)代替。
....
现在有一个属性是TStringList类型的,请问在COM中的用什么参数表示?
数组(array)类型的呢?
如果可能的话,参数中可能需要传递一个Class类,怎么解决?
前提是,调用COM者不一定是delphi语言(如C#),请高手赐教?
但COM的很多参数类型和Delphi或其它语言的数据类型都不一样。
比如:delphi中的boolean 在COM中需要用VARIANT_BOOL(WordBool)代替。
delphi中的string 在COM中需要用BSTR(widestring)代替。
....
现在有一个属性是TStringList类型的,请问在COM中的用什么参数表示?
数组(array)类型的呢?
如果可能的话,参数中可能需要传递一个Class类,怎么解决?
前提是,调用COM者不一定是delphi语言(如C#),请高手赐教?
解决方案 »
- 请问哪个Edit控件有横线分割?
- SPCOMM 接收数据不完整!
- 谁帮我Overrdie 一下 TSpeedButton的方法?我不喜欢bsup状态.
- ███【★】█★█【★★★★★热烈庆祝★★★★★】█★█【★】███↑--███【★】█★█【★天津聚会CS★DN圆满结束★】█★█【
- 如何让程序返回值???
- 请教adoquery更新数据哪儿出错?
- 怎样让edit中的内容右对齐或居中?
- 我想在我的程序中用WORD的拼写和语法检查工具,可以吗?WORD的这个工具是不是ActiveX?
- delphi问题请教,大侠们帮帮我啊
- 如何在socketserver端收取图片?
- ~~~~TntEdit,TntMemo等控件有bug嗎,怎麼當輸入的是漢字時只添加了一部分字進數據表裡去呢?那個字段是GoodsMemo 類型大小nvarchar(500)
- indy传输内存流的问题
例如IStringList,然后把TStringList的public方法全加到IStringList,然后用个类来实现IStringList
而在属性中把这个IStringList接口返回就可以了
a:tstringlist;
o:olevariant;
var
i:integer;
begin
o:=vararraycreate([0,a.count-1],varvariant);
for i:=0 to a.count-1 do
o[i]:=a.strings[i];
end;这种方法是可以
问题是属性如果用olevariant类型,那o[i]的下标值count如何知道是多少?
就是说我如何知道olevariant变量放了多少个string字符串
V: OleVariant;
I: Integer;
begin
V := VarArrayCreate([0,9],varOleStr );
if VarIsArray(V) then
//ShowMessage(IntToStr(VarArrayHighBound(V,1) - VarArrayLowBound(V,1) + 1));
for I := VarArrayLowBound(V,1) to VarArrayHighBound(V,1) do
begin
V[I] := IntToStr(I);
end;
end;
对对,就是需要这一句,我先写个试试,成功后立即结贴。