Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi procedure warten lassen (https://www.delphipraxis.net/28818-procedure-warten-lassen.html)

deusmac 30. Aug 2004 18:12


procedure warten lassen
 
Wie kann ich eine Prozedur für eine beliebige zeit immer kurz unterbrechen zb während einer schleife, damit diese nicht blitzartig abläuft und wie kann ich währenddessen immer noch einen button benutzen, der am besten auch noch diese schleife anhalten kann?

Matze 30. Aug 2004 18:15

Re: procedure warten lassen
 
delaydelay

Schleife anhalten (verlassen) Hier im Forum suchenbreak

deusmac 30. Aug 2004 18:25

Re: procedure warten lassen
 
Wie kann ich jetzt noch während einer laufenden Prozedur einen Button zum funktionieren bringen. Ich würd nämlich auch gerne mein Programm vor beendigung schließen können oder einfach aus der Schleife ausbrechen können, aber erst mal danke für die schnelle Antwort.

nailor 30. Aug 2004 18:39

Re: procedure warten lassen
 
mit dem delay sollte das klappen.

himitsu 30. Aug 2004 19:07

Re: procedure warten lassen
 
entweder:
Delphi-Quellcode:
Var Abbruch: Boolean;

Procedure Delay(msecs: Integer);
  Var FirstTickCount: LongInt;

  Begin
    FirstTickCount := GetTickCount;
    Repeat
      Application.ProcessMessages;
    Until ((GetTickCount - FirstTickCount) >= LongInt(msecs));
  End;

Procedure TForm1.Button1Click(Sender: TObject);
  Begin
    Abbruch := True;
  End;

Procedure TForm1.Button2Click(Sender: TObject);
  Var i: Integer;

  Begin
    Abbruch := False;
    For i := 1 to 1000 do Begin
      Label1.Caption := IntToStr(i);
      Delay(100);
      If Abbruch Then Break;
    End;
  End;
oder
Delphi-Quellcode:
Var Abbruch: Boolean;

Procedure TForm1.Button1Click(Sender: TObject);
  Begin
    Abbruch := True;
  End;

Procedure TForm1.Button2Click(Sender: TObject);
  Var i: Integer;

  Begin
    Abbruch := False;
    For i := 1 to 1000 do Begin
      Label1.Caption := IntToStr(i);
      Application.ProcessMessages;
      Sleep(100);
      If Abbruch Then Break;
    End;
  End;
oder ...

Ultimator 30. Aug 2004 20:37

Re: procedure warten lassen
 
Zitat:

Zitat von deusmac
Wie kann ich jetzt noch während einer laufenden Prozedur einen Button zum funktionieren bringen.

Das klingt für mich so, als ob die Anwendung einfriert, wenn die Prozedur läuft. In diesem Fall würde ich Application.Processmessages empfehlen (ggf. die Hilfe konsultieren ;-) )

Vjay 30. Aug 2004 20:42

Re: procedure warten lassen
 
Ihr solltet in euren delay-Prozeduren noch auf die WM_QUIT prüfen ;)

nailor 30. Aug 2004 21:16

Re: procedure warten lassen
 
hab ich mich auch immer geärgert, dass man das programm nicht verlassen konnte, und ich wusste damals nicht warum. heute wo ich es verstehe, hab ich was gegen ProcessMessages.

SirThornberry 30. Aug 2004 21:19

Re: procedure warten lassen
 
ich würde einen Thread empfehlen, für sowas gibts die ja damit man in der Anwendung weiter klicken kann während etwas anderes im Hintergrund noch läuft


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:11 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