Hallo, ich programmiere mit Delphi5 unter Windows XP-Home und möchte die Bearbeitung einer großen Datei durch den Benutzer abbrechen lassen. Als Beispiel habe ich ein Formular mit zwei Butons und einem Label; Der folgende Ablauf soll mit einem (doppel)Click auf den zweiten Button unterbrochen werden. procedure TForm1.Button1Click(Sender: TObject); var i: integer; begin i := 0; while i < 60000 do begin; i := i + 1; label1.Caption := inttostr(i); label1.Refresh; end; end; Kann mir bitte einer beschreiben wie ich vorgehen muss, oder nach was ich suchen muss. Vielen Dank Jürgen
Hi Verarbeitung und GUI-Ereignis-Behandlung müssen in zwei unterschiedlichen Threads laufen (was sie eh sollten). Dann kannst du von deinem GUI-Thread eine Nachricht an den Verarbeitungs-Thread schicken welcher dann die Verarbeitung geordnet abbrechen kann. Matthias
Hallo Matthias, danke für die Information. Ich habe zwar gehofft, dass es soetwas wie einen "Abbruch-Button" als Komponente gibt. Wie Du schreibst, werde ich mich jetzt mit der Multithread-Anwendung auseinandersetzen müssen. Wenigstens habe ich jetzt eine Richtung, in der ich weiter suchen kann. Jürgen
ist aber ganz einfach: vor der schleife ein abort:=false; in der schleife eine Abfrage if abort then break; und im onclick-Event des Buttons einfach ein abort:=true; weiterhin sollest du in der Schleife von zeit zu zeit (z.b. bei jedem 1000. durchgang) application.processmessages aufrufen, if (i mod 1000)=0 then application.processmessages; sonst wird der button nicht abgefragt und das Programm schaut aus als wär es abgestürzt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.