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

Delphi—编写一个程序,读取一系列数字并将它们相加,直到用户输入0,delphi,delphi-7,delphi-xe2,delphi-2010,delphi-2009,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 + STR

这就是我目前所处的位置,当我在编辑框中输入一个数字并按下它崩溃的按钮时,我是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.

当用户提供他的第一个值时,您将永远循环。在事件处理程序中,只需获取一个值并对其进行处理

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

这样,用户可以提交更多的数字,直到他向您提供一个
0

如果您键入字符而不是数字,则会导致异常。您可以处理异常,也可以防止用户输入这样的字符

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;

按下enter键时,您正在代码中循环。用户永远没有机会输入另一个数字或更改
edtNum
的内容。因此循环将永远运行(除非他们先输入0)。此外,当发布包含“崩溃”或“错误”等短语的问题时,它有助于包含显示的任何错误消息的内容。我猜,在这种情况下,它是关于溢出的。“它崩溃了”对我们没有好处。您可以看到确切的错误消息。我们不能。请不要让我们猜。告诉我们错误是什么!这项任务看起来像是在旧的Turbo Pascal时代用控制台应用程序完成的家庭作业。我通常会在一瞬间否决这样的问题,但我会很好,因为你是Delphi的新手。很好。你在他的作业上得了A。