我几乎不分离要在“ 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/

10-11 22:43
查看更多