www.mikrocontroller.net

Forum: PC-Programmierung Abbruch von Programmen


Autor: Jürgen C (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jürgen C (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dunkelmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jürgen C (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Dunkelmann,
danke für die Hilfe.

Jürgen C.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.