Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - endloschleife durch button beenden


urbanchaos - Di 29.01.08 16:51
Titel: endloschleife durch button beenden
Hi
ich hab hier ne endlosschleife, die ich aber durch nen button klick beenden will. hab schon irgendwie rausgefunden, dass das mit Threads gehen soll, aber ich komm da net so richtig weiter.

ich hab jetzt das

Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.Button1Click(Sender: TObject);
begin
threadhandle := beginthread(nil,0,@Set(), nil,0,ThreadID);
end;

aber da kommt nen fehler!
kann mir da jemand helfen??
danke!


Gausi - Di 29.01.08 16:56

Wenn du dich mit Threads beschäftigen willst, aber noch nicht so richtig Ahnung davon hast: Entweder sein lassen, oder ein Tutorial dazu lesen und verstehen. Das von Luckie ist imho sehr gut: http://www.michael-puff.de/Developer/Delphi/Tutorials/

Ansonsten kannst du in die lange Schleife ein Application.ProcessMessages; einbauen, was aber nur ab und zu aufgerufen werden sollte (z.B. alle 100 mal, je nachdem, wie schnell ein Durchlauf zu Ende ist). Zusätzlich baust du eine globale Variable MachWeiter: Boolean; ein, die du bei Programmstart auf True setzt, und im AbbruchButton auf False. Zu Beginn eines Schleifendurchlaufs überprüfst du diese Variable und brichst ggf. ab.


urbanchaos - Di 29.01.08 17:08

user profile iconGausi hat folgendes geschrieben:
Wenn du dich mit Threads beschäftigen willst, aber noch nicht so richtig Ahnung davon hast: Entweder sein lassen, oder ein Tutorial dazu lesen und verstehen. Das von Luckie ist imho sehr gut: http://www.michael-puff.de/Developer/Delphi/Tutorials/

Ansonsten kannst du in die lange Schleife ein Application.ProcessMessages; einbauen, was aber nur ab und zu aufgerufen werden sollte (z.B. alle 100 mal, je nachdem, wie schnell ein Durchlauf zu Ende ist). Zusätzlich baust du eine globale Variable MachWeiter: Boolean; ein, die du bei Programmstart auf True setzt, und im AbbruchButton auf False. Zu Beginn eines Schleifendurchlaufs überprüfst du diese Variable und brichst ggf. ab.


jop den 2. teil hab ich auch schon, aber bei der endlosschleife hoert der ja eben nich mehr auf klicks^^

ich probiers mal mit dem application dings^^

jop hat gefunzt^^ thx =)


Gausi - Di 29.01.08 17:10

Das Application-Dings ist dafür da, dass der wieder auf Klicks hört. Da wird halt die Nachrichten-Schleife der Anwendung abgearbeitet, und eine Nachricht ist dann dieser Button-Klick. ;-)


urbanchaos - Di 29.01.08 18:04

user profile iconGausi hat folgendes geschrieben:
Das Application-Dings ist dafür da, dass der wieder auf Klicks hört. Da wird halt die Nachrichten-Schleife der Anwendung abgearbeitet, und eine Nachricht ist dann dieser Button-Klick. ;-)


jop^^ schon klar^^ bissl was versteh ich auch noch davon^^ wusste nur net, dass es sowas gibt^^
nochma thx =)