我正在使用 Embarcadero 的 C++ 构建器 XE
String command1 = "FREQ ";
String command2 = " Mhz\n";
int index = Form1->ListBox1->ItemIndex;
String full = command1.operator +=(IntToStr((index+2)*10)).operator +=(command2);
TcpClient1->SendBuf((BYTE*)full,13,0);Sleep(30);
在最后一行我得到 E2031 无法从 'UnicodeString' 转换为 'unsigned char*'
我发送的是我的设备(接收器)的命令,格式为(命令,lenght_of_command)。当我在计划文本中发送它时,比如
TcpClient1->SendBuf((BYTE*)"FREQ 330.5 MHz\n",15,0);Sleep(30);
一切正常。非常感谢您的帮助。
最佳答案
String
映射到 XE 中的 UnicodeString
。修复代码的最简单方法是改用 AnsiString
(并停止使用 +=
运算符,因为您没有正确使用它):
AnsiString command1 = "FREQ ";
AnsiString command2 = " Mhz\n";
int index = Form1->ListBox1->ItemIndex;
AnsiString full = command1 + IntToStr((index+2)*10) + command2;
TcpClient1->SendBuf((BYTE*)full.c_str(),full.Length(),0);
Sleep(30);
或者:
int index = Form1->ListBox1->ItemIndex;
AnsiString full;
full.sprintf("FREQ %d Mhz\n", (index+2)*10);
TcpClient1->SendBuf((BYTE*)full.c_str(),full.Length(),0);
Sleep(30);
关于c++ - Embarcadero 无法从 'UnicodeString' 转换到 'unsigned char *',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16236711/