📄 unit2.pas
字号:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 = class(TForm)
GroupBox1: TGroupBox;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
procedure Button1Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
var
a,b,c,sb,xb,re:Single;
delta:Single;
s1:String;
i:integer;
begin
try
if edit1.Text=''Then edit1.Text:='0';
if edit2.Text=''Then edit2.Text:='0';
if edit3.Text=''Then edit3.Text:='0'; //增加的语句
s1:=Edit1.Text;
i:=Pos('-',s1);
if i<>0 Then
if i>1 Then
begin
messagedlg('负号不允许在数值的中间',mterror,[mbyes],0);
edit1.SetFocus;
exit;
end
Else
if i=1 Then
begin
delete(s1,1,i);
i:=Pos('-',s1);
if i<>0 Then
begin
messagedlg('输入了两个以上的负号',mterror,[mbyes],0);
edit1.SetFocus;
exit;
end;
end;
s1:=Edit2.Text;
i:=Pos('-',s1);
if i<>0 Then
if i>1 Then
begin
messagedlg('负号不允许在数值的中间',mterror,[mbyes],0);
edit2.SetFocus;
exit;
end
Else
if i=1 Then
begin
delete(s1,1,i);
i:=Pos('-',s1);
if i<>0 Then
begin
messagedlg('输入了两个以上的负号',mterror,[mbyes],0);
edit2.SetFocus;
exit;
end;
end;
s1:=Edit3.Text;
i:=Pos('-',s1);
if i<>0 Then
if i>1 Then
begin
messagedlg('负号不允许在数值的中间',mterror,[mbyes],0);
edit3.SetFocus;
exit;
end
Else
if i=1 Then
begin
delete(s1,1,i);
i:=Pos('-',s1);
if i<>0 Then
begin
messagedlg('输入了两个以上的负号',mterror,[mbyes],0);
edit3.SetFocus;
exit;
end;
//负号的处理
end;
s1:=Edit1.Text;
i:=Pos('.',s1);
if i<>0 Then
if i=1 Then
begin
messagedlg('小数点不允许在数值的开头位置',mterror,[mbyes],0);
edit1.SetFocus;
exit;
end
Else if i<>1 Then
begin
delete(s1,1,i);
i:=Pos('.',s1);
if i<>0 Then
begin
messagedlg('不能输入两个以上的小数点',mterror,[mbyes],0);
edit1.SetFocus;
exit;
end;
end;
s1:=Edit2.Text;
i:=Pos('.',s1);
if i<>0 Then
if i=1 Then
begin
messagedlg('小数点不允许在数值的开头位置',mterror,[mbyes],0);
edit2.SetFocus;
exit;
end
Else if i<>1 Then
begin
delete(s1,1,i);
i:=Pos('.',s1);
if i<>0 Then
begin
messagedlg('不能输入两个以上的小数点',mterror,[mbyes],0);
edit2.SetFocus;
exit;
end;
end;
s1:=Edit3.Text;
i:=Pos('.',s1);
if i<>0 Then
if i=1 Then
begin
messagedlg('小数点不允许在数值的开头位置',mterror,[mbyes],0);
edit3.SetFocus;
exit;
end
Else if i<>1 Then
begin
delete(s1,1,i);
i:=Pos('.',s1);
if i<>0 Then
begin
messagedlg('不能输入两个以上的小数点',mterror,[mbyes],0);
edit3.SetFocus;
exit; //小数点的处理
end;
end;
a:=strtofloat(edit1.Text);
b:=strtofloat(edit2.Text);
c:=strtofloat(edit3.Text);
If a <>0 Then //方程有两个根
begin
delta:=b*b-4*a*c;
re:=-b/(2*a);
if delta>0 Then //方程有两个实根
begin
sb:=Sqrt(delta)/(2*a);
Label4.Caption:='方程有两个实根:';
Label5.Caption:=format('X1 =%.4f',[re+sb]);
Label6.Caption:=format('X2 =%.4f',[re-sb]);
end
Else
if delta=0 Then //方程有两个实根
begin
Label4.Caption:='方程有两个相等实根:';
Label5.Caption:=format('X1 =X2 =%.4f',[re]);
Label6.Caption:='';
end
Else //方程有两个虚根
begin
xb:=Sqrt(-delta)/(2*a);
Label4.Caption:='方程有两个相等虚根:';
Label5.Caption:=format('X1 =%.4f+%.4fi',[re,xb]);
Label6.Caption:=format('X1 =%.4f-%.4fi',[re,xb]);
end;
end
Else //方程仅有一个根
if b<>0 Then
begin
re:=-b/c;
Label4.Caption:='方程仅有一个根;';
Label5.Caption:=format('X =%f',[re]);
Label6.Caption:='';
end
Else //方程无意义
begin
Label4.Caption:='方程无意义!';
Label5.Caption:='';
Label6.Caption:='';
end;
except
showmessage('您输入的数据不合法');
end;
end;
procedure TForm2.Edit1KeyPress(Sender: TObject; var Key: Char);
var l:boolean;
begin
l:=(key<#8)or(key>#8)and(key<#45)or(key>#46)and(key<#48)or(key>#57);
if l then
begin
key:=#0;
ShowMessage('不能输入非法字符,请重新输入')
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -