/ / Delphi - 一連の数字を読み取り、ユーザーが0を入力するまでそれらを加算するプログラムを書く[del] - デルファイ、デルファイ-7、デルファイ-xe2、デルファイ-2010、デルファイ-2009

Delphi - 一連の数字を読み、ユーザーが0を入力するまでそれらを加算するプログラムを書く[del] - デルファイ、デルファイ-7、デルファイ-xe2、デルファイ-2010、デルファイ-2009

これは私が今のところにいるところであり、私がエディットボックスに数を入力してそれがクラッシュするボタンを押すとき、私はデルファイに初心者です助けてください!ありがとう、マット

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;