![]() |
Application.Processmessages blockiert
Hi. Ich nutze in meinen Programm Application.Processmessages um zu warten, bis eine bestimmte sage eintritt.
Aber wenn ich dies in einer Whileschleife ablaufen lasse, kann ich das Programm mit Alt + F4 nicht beenden. Warum ist das denn so? Wie kann ich das lösen? Hier mal ein kleines Beispiel:
Delphi-Quellcode:
Danke für Eure Antworten
procedure TForm22.FormActivate(Sender: TObject);
begin while m_bTest = FALSE do Application.ProcessMessages; end; |
Re: Application.Processmessages blockiert
Delphi-Quellcode:
wartet nicht, sondern stösst nur die Abarbeitung von Windows-Nachrichten an. Du solltest zusätzlich noch einen Delay() o.ä. einbauen
Application.ProcessMessages;
|
Re: Application.Processmessages blockiert
Ok, das würde einiges erklären. Mit einem Sleep hab ich es auch schon probiert aber da geht es auch nicht.
Delphi-Quellcode:
Gibts in Delphi denn ein Delay? Die Delays in diesem Forum sind nämlich auch alle mit Application.Processmessages gelöst
procedure TForm22.FormActivate(Sender: TObject);
begin while m_bTest = FALSE do begin Application.ProcessMessages; sleep(10); end; end; |
Re: Application.Processmessages blockiert
nein, Application.ProcessMessages verarbeitet die Nachrichten ... bzw. dieses ruft solange das inderne Application.ProcessMessage (man beachte das fehlende S) auf, wie Nachrichten vorhanden sind und .ProcessMessage verarbeitet diese dann.
[add] ach ja, und nicht auf False/True prüfen! [add2] nein, aber ![]() ![]()
Delphi-Quellcode:
while not m_bTest and not Application.Terminated do
Application.ProcessMessages; |
Re: Application.Processmessages blockiert
Sleep() ist aktives warten. Sollte man nicht verwenden.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:52 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