主题:Variant到底怎么用?
是这样的:
服务端定义了一个方法,包括三个参数:
IadoproDispT<T>::remosql(VARIANT* tab/*[out]*/, unsigned_char Para1/*[in]*/, VARIANT* Para2/*[in]*/){...}
客户端调用这个方法:
AnsiString teststr="this is a string.";
Variant v1;
v1=teststr;
TempInterface.remosql(ClientDataSet1->Data,'A',&v1);
编译时前两个参数没问题,第3个参数出错:
[C++ Error] Unit1.cpp(66): E2034 Cannot convert 'Variant *' to 'tagVARIANT *'
[C++ Error] Unit1.cpp(66): E2342 Type mismatch in parameter 'Para2' (wanted 'tagVARIANT *', got 'Variant *')
类似的问题还有很多,基本上都定义好了用Variant,却找tagVARIANT的错误,而且没有规律,比如一个Variant类型的v :
String(v);有时可以返回一个串,有时就出错:
[C++ Error] adoproImpl.cpp(45): E2285 Could not find a match for 'AnsiString::AnsiString(tagVARIANT)'
[C++ Error] adoproImpl.cpp(45): E2031 Cannot cast from 'tagVARIANT' to 'AnsiString'
服务端定义了一个方法,包括三个参数:
IadoproDispT<T>::remosql(VARIANT* tab/*[out]*/, unsigned_char Para1/*[in]*/, VARIANT* Para2/*[in]*/){...}
客户端调用这个方法:
AnsiString teststr="this is a string.";
Variant v1;
v1=teststr;
TempInterface.remosql(ClientDataSet1->Data,'A',&v1);
编译时前两个参数没问题,第3个参数出错:
[C++ Error] Unit1.cpp(66): E2034 Cannot convert 'Variant *' to 'tagVARIANT *'
[C++ Error] Unit1.cpp(66): E2342 Type mismatch in parameter 'Para2' (wanted 'tagVARIANT *', got 'Variant *')
类似的问题还有很多,基本上都定义好了用Variant,却找tagVARIANT的错误,而且没有规律,比如一个Variant类型的v :
String(v);有时可以返回一个串,有时就出错:
[C++ Error] adoproImpl.cpp(45): E2285 Could not find a match for 'AnsiString::AnsiString(tagVARIANT)'
[C++ Error] adoproImpl.cpp(45): E2031 Cannot cast from 'tagVARIANT' to 'AnsiString'