我用VC写了一个ACTIVEX控件,某个函数的参数定义为VARIANT类型,是传值而非指针。
该参数实际上是用来传递数组的,类似于VB的SOCK控件的SENDDATA方法的参数(OLEVariant类型)。现在用VB来传递一串字符串,比如“012345”,定义一个String类型,然后赋值=“012345”,再作为参数传递进去。但是实际上到达控件内部时,却变成了'0'0 '1'0 '2'0 '3'0 '4'0 '5'0,也就是说变成了双字节的widestring类型。为什么会这样,怎样解决?另外说明一下,我用VC和DELPHI都调用了该函数,没有出现这种问题,其中使用一个VARIANT变量来传递该参数,对该变量的处理如下:
VC中使用了SafeArrayCreate函数分配了VARIANT变量的空间,VARIANT变量指明为VT_UI1 | VT_ARRAY类型。
DELPHI中使用了VarArrayCreate函数分配VARIANT变量的空间,VARIANT变量指明为varByte类型。还有,如果我要使用该参数传递包含非ASCII码时,该怎么赋值(要注意其中可能包含0),同样是VB。