DELPHI调用VC编的ActiveX控件,其中数据类型要求OLEVariant,在VC例子中用的是COleSafeArray类型,在DELPHI中用相应的类型

  • 主题发起人 主题发起人 黑星星
  • 开始时间 开始时间

黑星星

Unregistered / Unconfirmed
GUEST, unregistred user!
DELPHI调用VC编的ActiveX控件,其中数据类型要求OLEVariant,在VC例子中用的是COleSafeArray类型,在DELPHI中用相应的类型却无法得到正确结果 ( 积分: 200 )<br />该ActiveX控件,在VC例子中是是这样:
COleSafeArray buff;
buff.CreateOneDim(VT_UI1, nSize);
结果正确,在buff中得到数据。

那么在DELPHI中对应的应该是:
buff:OleVariant;
buff:=VarArrayCreate([0,nSize-1],varByte);
但是最后结果不对,buff中内容没有改变,我开CPU窗口跟踪了一下,发现里面很多检查数据类型的语句,是否DELPHI的数据类型无法兼容该控件?
有解决方案吗?
 
该ActiveX控件,在VC例子中是是这样:
COleSafeArray buff;
buff.CreateOneDim(VT_UI1, nSize);
结果正确,在buff中得到数据。

那么在DELPHI中对应的应该是:
buff:OleVariant;
buff:=VarArrayCreate([0,nSize-1],varByte);
但是最后结果不对,buff中内容没有改变,我开CPU窗口跟踪了一下,发现里面很多检查数据类型的语句,是否DELPHI的数据类型无法兼容该控件?
有解决方案吗?
 
怎么没人回答?高手都到哪里去了?
 
这样试试
var
PSA : PSafeArray;
Bound : TSAFEARRAYBOUND;
begin
Bound.lLbound:=0;
Bound.cElements:=1;
PSA := SafeArrayCreate(VT_UI1, 1, Bound);
try

//
//.........
//
finally
SafeArrayDestroy(PSA);
end;

end;
 
我用的是D7,D7里SafeArrayCreate的数据类型和D6不同了,这段程序不能用吧?
 
D7中用没问题啊,是不是你忘了
uses ActiveX;
 
我也遇见这个问题,是在用OLYMPUS SDK的过程中,调用 OCX引起的,VB正常,DELPHI不行,就是OLEVARIANT。
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3053874
我的问题,这几天正疯狂努力中...
有解决的,与我联系 qq 23059893
 
To tseug:
你的这段程序D7是可以的。我不行是因为前面试验的时候uses VarUtils;
里面也有SafeArrayCreate的定义,而且类型不同。
不过问题没有解决。控件要求是OLEVariant类型
 
buff:=VarArrayCreate([0,nSize-1],varByte);
其实也是调用了SafeArrayCreate,DELPHI做了封装而已。
头痛啊,为什么就是不行呢?
 
SafeArray 也是OLEVariant类型
 
PSA不是OLEVariant类型啊,用PSA做参数就报错
 
PSA^报错:
Incompatibvle types: 'OleVariant' and 'tagSAFEARRAY'
 
看来没人回答了,结帖吧。
 
后退
顶部