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 に答える