0

我很难将变量 String 和 Integer 分开以传入“if()”语句。我有两个变量"buffString""buffInteger"当我将 buffString 放入“if()”语句时,我想在 buffString 变量中取字符串“Data Stop”,然后设置为 RichEdit 以显示“Data Stop”,但问题是当填充与其错误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);
 }
}

我应该怎么做这个代码?

4

1 回答 1

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"应该代表整数的字符串,代码不会以这种方式失败。

于 2012-12-27T08:09:46.510 回答