Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Abbruch wenn der PC arbeitet (https://www.delphipraxis.net/14713-abbruch-wenn-der-pc-arbeitet.html)

F.W. 14. Jan 2004 13:22


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.

sakura 14. Jan 2004 13:27

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:
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;
...:cat:...

MikeS 14. Jan 2004 13:27

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!

choose 14. Jan 2004 13:28

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: Hier im Forum suchenschleife abbrechen solltest Du div Lösungsansätze dieser Art finden.
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 18:21 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz