PAnsiChar,无效的类型转换

时间:2014-10-16 14:09:30

标签: delphi

我将字符串转换为AnsiChars有问题,函数看起来像

function PI_CST(ID: LongInt;
            const szAxes: PAnsiChar;
            const szNames: PAnsiChar): Bool cdecl  ;

我想以这种方式使用这个功能:

bOk:=PI_CST(g_iD,'1',PAnsiChar(ComboBox1.Text));

但是当我以这种方式调用函数时它不起作用:bOk:=PI_CST(g_iD,'1','M-511.DD1')它工作得很好(引号之间的值是const),有没有办法在这个函数中使用参数选择ComboBox?< / p>

1 个答案:

答案 0 :(得分:2)

PAnsiChar(ComboBox1.Text)

这告诉编译器解释Text属性返回的字符串,就像它是指向8位ANSI字符的指针一样。如果字符串是Unicode字符串,则强制转换无效,因为底层缓冲区使用16位文本进行编码。

您需要在转换之前将字符串转换为ANSI:

PAnsiChar(AnsiString(ComboBox1.Text))