/ / Delphi - Escrevendo um programa que lê uma série de números e os adiciona até o usuário entrar 0 [fechado] - delphi, delphi-7, delphi-xe2, delphi-2010, delphi-2009

Delphi - Escrevendo um programa que lê uma série de números e os adiciona até o usuário entrar 0 [fechado] - delphi, delphi-7, delphi-xe2, delphi-2010, delphi-2009

Este é o lugar onde estou até agora e quando eu digito um número na caixa de edição e pressiono o botão que trava, eu sou um novato para Delphi por favor me ajude! Obrigado Matt

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.

Respostas:

1 para resposta № 1

Você está dando um loop para sempre quando o usuário fornece seu primeiro valor. Tudo o que você precisa fazer no manipulador de eventos é pegar um único valor e processá-lo.

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

Desta forma, o usuário pode enviar mais números, até que ele lhe forneça um 0.


1 para resposta № 2

Se você digitar um caractere em vez de um número, isso resultará em uma exceção. Você pode tratar a exceção ou impedir que o usuário insira caracteres como este.

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;