我很难将变量String和Integer分开传入“if()”语句。
我有两个变量"buffString"
和"buffInteger"
,当我把buffString放在“if()”语句中时,我想在buffString变量中取String“Data Stop”,然后设置为RichEdit显示“数据停止”,但当buffInteger
填充与buffString
相同时,问题出现在此过程中。和编译器说"Data Stop"
无效的整数值
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);
}
}
我该怎么做这个代码?
答案 0 :(得分:2)
将bufferInteger
作业移至else
子句:
else
{
bufferInteger = StrToInt(BUF_RX->Data_suhu);
ad_log_Serial("AT89S52 -> "+IntToStr(bufferInteger),clRed);
txtTemp->Text = IntToStr(bufferInteger).c_str();
}
由于它没有在它之外使用,所以没有必要在那里使用它。并假设任何不是"Data Stop"
的字符串应该表示一个整数,代码不会以这种方式失败。