首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

Cannot convert ‘char *’ to ‘wchar_t *’以及Incompatible type conversion有关问题

2012-08-29 
求助:Cannot convert ‘char *’ to ‘wchar_t *’以及Incompatible type conversion问题初来贵地,小弟有一问

求助:Cannot convert ‘char *’ to ‘wchar_t *’以及Incompatible type conversion问题
初来贵地,小弟有一问题求教各位大侠,
首先,有如下代码
String pFilePathName = "S7:[S7 connection_1]DB1,W2" ;
Variant myValue ;
long *myQuality,ErrorNr ;
double myTimeStamp ;
ErrorNr = DatCon1->ReadVariable(pFilePathName,myValue,myQuality,myTimeStamp) ;
编译时报错:
Cannot convert ‘char *’ to ‘wchar_t *’
Type mismatch in parameter ‘itemid’(wanted ‘wchar_t *’,got ‘char *’)
Incompatible type conversion

然后,根据网上资料对pFilePathName进行类型转换,如下
String pFilePathName = "S7:[S7 connection_1]DB1,W2" ;
Variant myValue ;
long *myQuality,ErrorNr ;
double myTimeStamp ;
ErrorNr = DatCon1->ReadVariable(WideString(pFilePathName).c_bstr(),myValue,myQuality,myTimeStamp) ;
编译时类型转换错误没有了,但还有报错:
Incompatible type conversion

其中,函数DatCon1->ReadVariable()原型在VB下语法如下:
Dim myValue As Variant
Dim myQuality As Long
Dim myTimeStamp As Date
Dim ErrorNr As Long
ErrorNr = DatCon1.ReadVariable("S7:[S7 connection_1]DB1,W0", myValue, myQuality, myTimeStamp)

哪位大侠帮帮看看。

[解决办法]
可以使用API函数MultiByteToWideChar进行转换
int MultiByteToWideChar(
__in UINT CodePage,
__in DWORD dwFlags,
__in LPCSTR lpMultiByteStr,
__in int cbMultiByte,
__out LPWSTR lpWideCharStr,
__in int cchWideChar
);
[解决办法]
错误代码:
Incompatible type conversion 

一般性错误:
不相容的类型转换 

分析与处理:
源文件中试图把一种类型转换成另一种类型。但这两种类型是不相容的。如函数与非函数间转换、一种结构或数组与一种标准类型转、浮点数和指针间转换等。

热点排行