我几乎不分离要在“ if()”语句中传递的变量String和Integer。
我有两个变量"buffString"
和"buffInteger"
,当我将buffString放在“ if()”语句中时,我想在buffString变量中使用字符串“ Data Stop”,然后将其设置为RichEdit以显示“ Data”停止”,但是在buffInteger
填充与buffString
相同的错误时会出现此问题。并且编译器说"Data Stop"
无效的Integer值
void __fastcall TfrmServer::ComPort1RxChar(TObject *Sender, int Count)
{
String buff;
ComPort1->ReadStr(buff,255);
BUF_RX->Data_suhu = buff; // source
int bufferInteger;
String bufferString;
try{
if(!buff.IsEmpty())
{
bufferInteger = StrToInt(BUF_RX->Data_suhu);
bufferString = BUF_RX->Data_suhu;
if(bufferString == "Data Stop")
{
ad_log_Serial("AT89S52 -> "+BUF_RX->Data_suhu,clRed);
}
else
{
ad_log_Serial("AT89S52 -> "+IntToStr(bufferInteger),clRed);
txtTemp->Text = IntToStr(bufferInteger).c_str();
}
LedRx->States->Items[0]->Value = true;
}
else
{
LedRx->States->Items[0]->Value = false;
}
}__finally
{
delete(BUF_RX);
}
}
我应该怎么做这段代码?
最佳答案
将您的bufferInteger
分配移动到else
子句:
else
{
bufferInteger = StrToInt(BUF_RX->Data_suhu);
ad_log_Serial("AT89S52 -> "+IntToStr(bufferInteger),clRed);
txtTemp->Text = IntToStr(bufferInteger).c_str();
}
由于它不在外面使用,所以在这里没有意义。并且假设任何不是
"Data Stop"
的字符串都应表示一个整数,则代码不会以这种方式失败。关于c++ - 如何在同一资源中分离String和Integer变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14051373/