Entwickler-Ecke
Sonstiges (Delphi) - Abbruch mit Application.ProcessMessages
Adrian - So 23.03.03 23:06
Titel: Abbruch mit Application.ProcessMessages
Hallo,
meine Frage ist zwar schon ein paarmal in ähnlicher Form im Forum aufgetaucht, aber bislang haben meine Versuche dazu noch keinen Erfolg gezeitigt. Den folgenden Code-Auszug benutze ich im Beispiel:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm1.Button1Click(Sender: TObject); begin n:=0; repeat Application.ProcessMessages; inc(n,1); Edit1.Text:=IntToStr(n); until n>=500000; end;
procedure TForm1.Button2Click(Sender: TObject); begin Edit1.Text:='Angehalten bei '+IntToStr(n); end; |
Eigentlich sollte ich mit Button2 die Zählschleife von Button1 abbrechen können, aber leider wird Button2Click erst ausgeführt, wenn der Zählerstand von 50000 erreicht ist. Wenn das mit Applicati-on.ProcessMessages erreichbar ist, wie? Wenn nicht, was muß ich statt dessen benutzen?
Gruß,
Adrian
Delete - So 23.03.03 23:13
Versuch es mal so:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| var Form1: TForm1; n : Integer; bCounting : Boolean = TRUE;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin n:=0; repeat if bCounting = False then break; Application.ProcessMessages; inc(n); Edit1.Text:=IntToStr(n); until n>=500000; end;
procedure TForm1.Button2Click(Sender: TObject); begin bCounting := FALSE; Caption:='Angehalten bei '+IntToStr(n); end; |
hitstec - So 23.03.03 23:13
Also du willst die Repeat-Schleife beenden?
Dann deklariere einen globalen Boolean-Wert, etwa bStop;
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| var bStop: Boolean;
procedure TForm1.Button1Click(Sender: TObject); begin n:=0; bStop:=false; repeat Application.ProcessMessages; inc(n,1); Edit1.Text:=IntToStr(n); until (n>=500000) or (bStop); end;
procedure TForm1.Button2Click(Sender: TObject); begin Edit1.Text:='Angehalten bei '+IntToStr(n); bStop:=true; end; |
MSCH - Sa 29.03.03 23:06
Hmm, merkwürdige Konstruktionen. Ich würd einfach einen Thread schreiben, der einen Wert hochzählt und bei X beendet wird.
Im Ersten Fall (Button Start) Thread losjagen.... im Zweiten Fall (Button Stop) Thread terminieren.
Den Wert des Threads (dessen Zähler) wid dann über eine variable ausgewertet.
grez
MSch
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!