首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

C++ Buider 运行异常

2012-09-15 
C++ Buider 运行错误我用的TStringGrid,TButton1,TButton2,TEdit1,TEdit2,用了两个Click事件,运行没有问题

C++ Buider 运行错误
我用的TStringGrid,TButton1,TButton2,TEdit1,TEdit2,用了两个Click事件,运行没有问题。

但是如果用一个TButton来实现,运行后会报错:

Project Project1.exe raised exception class EConverError with message ''' is not a valid floating point value'.Process stopped.Use Step or Run to continue.



//---------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
double a1,b1,sum1;
for(int row=1;row<=6;++row)
  {
  a1=StringGrid1->Cells[0][row].ToDouble();
  sum1+=a1;b1=sum1/6;
  Edit1->Text=FloatToStr(b1);
  }
}
//---------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
double a2,b2,sum2;
for(int row=1;row<=6;++row)
  {
  a2=StringGrid1->Cells[1][row].ToDouble();
  sum2+=a2;b2=sum2/6;
  Edit2->Text=FloatToStr(b2);
  }
}
//---------------------------------------

[解决办法]
谨防 StringGrid1->Cells[0][row] 出现空值的情况。

C/C++ code
try{  a1 = StringGrid1->Cells[0][row].ToDouble();}catch (...){  a1 = 0.0}
[解决办法]
sum1,sum2,sum3,sum4为累加,却没有归0,换句话说就是点一些Button就会多累加一次,是不是你就是想要这个效果?如果是这样程序运行就会不确定,会出错很正常,只能对运算公式给出是否符合要求的条件才能正常运算。如果不是你的本意,那么你的程就有问题,也就是说公式写的有问题。k1=(vic-vin*vch)/(vii-vin*vin);是无法运算的。

热点排行