0

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

2 回答 2

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.

于 2012-10-10T10:59:18.807 回答
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;
于 2012-10-10T11:14:48.670 回答