各位大哥,帮小弟一个忙呀。555555555555

lichenzhou333 2003-03-11 09:45:01
这个小程序能够编译成功,但是操作的时候除了点问题:
头文件:

//---------------------------------------------------------------------------

#ifndef jsH
#define jsH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <math.h>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TEdit *Edit1;
TEdit *Edit2;
TEdit *Edit3;
TEdit *Edit4;
TButton *Button1;
TButton *Button2;
void __fastcall Button1Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif

原代码:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "js.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float a,b,c,p,s;
a=StrToFloat(Edit1->Text);
b=StrToFloat(Edit2->Text);
c=StrToFloat(Edit3->Text);

p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));

Edit4->Text=FloatToStr(s);


}
//---------------------------------------------------------------------------

异常文件:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
USERES("Bjs.res");
USEFORM("js.cpp", Form1);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->Run();
}//箭头就是指着这里的。
catch (Exception &exception)
{
Application->ShowException(&exception);
}
return 0;
}
//---------------------------------------------------------------------------
问题提示:
project bjs.exe raised exception class Econvert Error with message "is not a valid floatint point value ".process stopped .use step
or run to continue.

view cpu window
...全文
73 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
gjgj3368 2003-03-11
  • 打赏
  • 举报
回复
这是一个异常,加入以下语句:
try{
a=StrToFloat(Edit1->Text);
b=StrToFloat(Edit2->Text);
c=StrToFloat(Edit3->Text);
}
catch(...)
{
ShowMessage("有一个数不是合法float型数");
}
编译失败 2003-03-11
  • 打赏
  • 举报
回复
都說對了
devie 2003-03-11
  • 打赏
  • 举报
回复
edit空间中出现了非法字符,不能转换为float型。如null等一些字符都不能转换
pcwak 2003-03-11
  • 打赏
  • 举报
回复
只能帮你UP
bcb_alone 2003-03-11
  • 打赏
  • 举报
回复
StrToFloat这个函数用错.
错误信息是指有一个无效的floatint值
也就是说StrToFloat()中的参数不是转化成floatint不成功比如:
StrToFloat("1.23")//转换成功
StrToFloat("asfsaf")//转换不成功.
你要确保你的Edit->Text中是有效的字符串.
如果不能确保,捕捉异常
try{
a=StrToFloat(Edit1->Text);
b=StrToFloat(Edit2->Text);
c=StrToFloat(Edit3->Text);
}
catch(...)
{
}
warton 2003-03-11
  • 打赏
  • 举报
回复
楼上说的对,另外,除的时候应该加上异常处理!!!
killedkiss 2003-03-11
  • 打赏
  • 举报
回复
也可以这样
p=(float)(a+b+c)/(float)2;/////////////
tccsdn 2003-03-11
  • 打赏
  • 举报
回复
看看Edit中的数是不是合法的呀
isaacw 2003-03-11
  • 打赏
  • 举报
回复
帮你顶
killedkiss 2003-03-11
  • 打赏
  • 举报
回复
p=(a+b+c)/2.0;/////////////
s=sqrt(p*(p-a)*(p-b)*(p-c));

13,873

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧