Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Repeat-Until-Schleife


Ottchen - Mi 11.12.02 20:08
Titel: Repeat-Until-Schleife
Hallo Liste,

also die Repeat-Until-Schleife muss doch irgendwie mit dem Button "zusammenpassen". Eure Vorschläge funktionieren bei mir leider nicht. Mit einer IF-Bedingung klappts, aber wie mit Repeat-Until? Ich habe hier nur Abstürze bzw. Endlosschleifen.

Hier der Code mit IF

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
procedure TForm1.Button1Click(Sender: TObject);

begin

zahl:=strtoint(edit1.text);
  if zahl>=0 then
    begin
      summe:=summe+zahl;
      panel1.Caption:=inttostr(summe);
    end
   ELSE showmessage('Negative Zahl');          //Umständlich? immer auf Button1 klicken
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  summe:=0;
  edit1.text:='';
  panel1.Caption:='';

end;



Habt ihr noch eine Idee?

(12.12. 09:24 Tino) Titel geändert & Topic verschoben.


Keldorn - Mi 11.12.02 20:46

hallo

was soll das? ich seh keinen Sinn drin.Du willst solange Zahlen addieren, die in einem Editfeld eingegeben werden, bis die Zahl negativ ist. Prüfen tust du aber nur einmal beim Buttonklick, dann wird sturr weiteraddiert, da sich die Zahl innerhalb einer Repaet-Schleife beim Buttonklick nie wieder ändern wird zumahl in deiner geposteten Repaetschleife nur 1xaußerhalb der schleife auf die Zahl gerüft wird... das haben aber schon die anderen versucht, dir zu verklickern

Warum muß es denn der Button klick sein?
Probiers doch mal mitr einem Enterdruck beim Stringgrid


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TForm1.Button1Click(Sender: TObject);
begin
  //initialisieren
  label1.caption:='0';
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
Var Zahl:integer;
begin
  //return im Editfeld gedrückt, Zahl addieren
  if Key=chr(vk_return) then
    begin
      Zahl:=strtoint(edit1.text);
      //nur positive Zahlen zulassen
      if zahl>=0 then label1.caption:=inttostr( strtoint(label1.caption)+Zahl );
    end;
end;


Mfg Frank


Keldorn - Mi 11.12.02 21:04

Sinn=0:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TForm1.Button2Click(Sender: TObject);
Var Zahl:integer;
    Abbruch:boolean;

begin
  Abbruch := false;
  repeat
    try
      Zahl:=strtoint(edit2.text);
      if zahl>=0 then label2.caption:=inttostr( strtoint(label2.caption)+Zahl );
    except
      Abbruch:=true;
    end;
    application.ProcessMessages;
    Sleep(50);
  until (zahl<0) or (abbruch);
end;