Abbruch von Programmen

Gast #249581
Lesenswert?

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
Gast #249582
Lesenswert?

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
Gast #249583
Lesenswert?

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
Gast #249584
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren