![]() |
Abbruch wenn der PC arbeitet
Wenn man ein Programm schreibt, das eine schwierige Aufgabe erledigt (also viel Zeit benötigt), ist es besser, wenn man einen Abbrechen Button mit hinsetzt.
Aber wie kann man den dann seine Aufgabe zuweisen? D.h. Wenn ich auf den Button klicke, wird das ja auch erst dann erledigt, wenn die abzubrechende Procedure fertig ist. |
Re: Abbruch wenn der PC arbeitet
Innerhalb der Prozedure (welche wohl eine Schleife hat) musst Du hin und wieder Application.ProcessMessages; aufrufen, damit der Klick des Users auf den Button registriert wird.
Wenn der User auf den Button klickt solltest Du z.B. eine Boolean-Variable setzen und diese immer in der Schleife überprüfen. Wenn die Schleife feststellt, daß sich der Wert der Boolean-Variable geändert hat, dann bricht die halt einfach ab ;-) Ein Beispiel:
Delphi-Quellcode:
...:cat:...
type
TForm1 = class(TForm) [...] btnAbbrechen: TButton; procedure btnAbbrechenClick(Sender: TObject); private { Private declarations } FAbbrechen: Boolean; procedure MachMichTot; [...] public { Public declarations } [...] end; [...] procedure TForm1.btnAbbrechenClick(Sender: TObject); begin FAbbrechen := True; end; procedure TForm1.MachMichTot; begin FAbbrechen := False; while not FAbbrechen do begin // schwere Rechnung [...] // und abarbeiten der Messages Application.ProcessMessages; end; end; |
Re: Abbruch wenn der PC arbeitet
Moin
wie umfangreich ist den deine Arbeit für den computer?? wenn du mit schleifen arbeitest kannst du doch z.b. eine bedingung zum abbrechen mit hineinbringen und mit Application.processMessages kannst du auch während das programm läuft von außen einfluß nehmen! |
Re: Abbruch wenn der PC arbeitet
Hallo F.W.,
häufig lösen Delphi-Entwickler dieses Problem mit Application.Processmessages und einer globalen Variablen. Wenn Du hier suchst: ![]() Bei genauerer Betrachtung wirst Du dort auch Erklärungen finden, warum diese Variante nicht eingesetzt werden sollte (zT wird stattdessen auf Threads verwiesen)... ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz