これは私が今のところにいるところであり、私がエディットボックスに数を入力してそれがクラッシュするボタンを押すとき、私はデルファイに初心者です助けてください!ありがとう、マット
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.
回答:
回答№1は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
.
回答№2の場合は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;