Delphi - 编写一个程序,读取一系列数字并将其相加,直到用户输入0

时间:2012-10-10 10:41:21

标签: delphi delphi-7 delphi-xe2 delphi-2010 delphi-2009

这就是我到目前为止,当我在编辑框中输入一个数字并按下按钮时它会崩溃,我是Delphi的新手请帮助!谢谢,马特

var
  Form3: TForm3;
  Count: integer;
  RunningTotal: Real;
implementation

{$R *.dfm}



procedure TForm3.btnEnterClick(Sender: TObject);
begin
 repeat

   RunningTotal:= RunningTotal + STRTOINT (edtNum.Text);
 until STRTOINT(edtNum.Text)=0;
  lblAns.Caption:= FLOATTOSTR (RunningTotal);

end;

procedure TForm3.edtNumChange(Sender: TObject);
begin

end;

procedure TForm3.FormCreate(Sender: TObject);
begin
Count:=0;
RunningTotal:=0;
end;

end.

2 个答案:

答案 0 :(得分:1)

当用户提供他的第一个值时,你将永远循环。您需要在事件处理程序中执行的操作是获取单个值,然后对其进行处理。

procedure TForm3.btnEnterClick(Sender: TObject);
begin
  if STRTOINT(edtNum.Text)=0 then
    lblAns.Caption:= FLOATTOSTR (RunningTotal)
  else
    RunningTotal:= RunningTotal + STRTOINT (edtNum.Text);
end;

这样,用户可以提交更多号码,直到他为您提供0

答案 1 :(得分:1)

如果您输入的是字符而不是数字,则会导致异常。您可以处理异常,或者可以阻止用户输入此类字符

var
  Form1: TForm1;
  myvalue : Real = 0;
implementation

{$R *.dfm}



procedure TForm1.btn1Click(Sender: TObject);
var
  number : Real;
begin
  number := StrToFloat(Edit1.Text);
  if number = 0 then ShowMessageFmt('The result is %f',[myvalue])
  else
  myvalue := myvalue + number;
  Edit1.Text := '';
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if not (Key in ['0'..'9','.']) then Key := #0;
end;