如何在同一个资源中分隔String和Integer变量

时间:2012-12-27 08:03:52

标签: c++

我很难将变量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);
 }
}

我该怎么做这个代码?

1 个答案:

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