![]() |
Fehlermeldung bei Delay
Hi Leute,
ich verwende für das Delay folgenden Code
Delphi-Quellcode:
Manchmal bekomme ich jedoch eine Exception bei Application.ProcessMessages
procedure TGenericComDeviceDataModule.Delay(Milliseconds: Integer);
var Tick: DWORD; Event: THandle; begin {$R-} Event := CreateEvent(nil, False, False, nil); try Tick := GetTickCount + DWORD(Milliseconds); while (Milliseconds > 0) and (MsgWaitForMultipleObjects(1, Event, False, Milliseconds, QS_ALLINPUT) <> WAIT_TIMEOUT) do begin Application.ProcessMessages; Milliseconds := Tick - GetTickCount; end; finally CloseHandle(Event); end; {$R+} end; in der User32.dll DispatchMessageA Zugriffsverletzung bei Adresse 000000. Lesen von Adresse 000000. Hat dies jemand schon mal gehabt, oder was könnte das sein ? Gruß Gargano |
AW: Fehlermeldung bei Delay
Ein Nullzeiger deutet auf ein nicht initialisiertes Objekt hin.
|
AW: Fehlermeldung bei Delay
Ja, schon.
Aber wie kann das bei einem dispatchmessage passieren ? Gruß Gargano |
AW: Fehlermeldung bei Delay
Dieses Delay wird auch ausschließlich im Hauptthread verwendet?
|
AW: Fehlermeldung bei Delay
Nein, sondern in mehreren TDatamodulen, die dynamisch erzeugt werden.
Jedes TDataModule hat da dann sein eigenes Delay. Gruß Gargano |
AW: Fehlermeldung bei Delay
Wenn es nur um ein paar Millisekunden geht, ist Application.ProcessMessages; völlig überflüssig und verfälscht die gewünschte Verzögerung.
Theorie: Während Application.ProcessMessages; ausgeführt wird und die while-Schleife inzwischen beendet worden ist, führt die Rücksprungadresse ins Leere. |
AW: Fehlermeldung bei Delay
Es sind einige TDatamodule die erzeugt werden und dann eigenständig
Geräte steuern mittels Threads. Der Fehler tritt aber nur bei der Initialisierung am Anfang auf. Der Zeitbereich ist von 100..1000 ms. Gruß Gargano |
AW: Fehlermeldung bei Delay
Wenn mehrere Delay nebeneinander laufen, dazu eventuell noch ein paar timer und schon läuft eine Menge Code ganz schnell mal quasi parallel (im selben Thread).
Etwas/Mehreres wurde durch das/die Delay unterbrochen und zwischendrin läuft was Anderes. Eventuell hast du ja dadurch ein paar Probleme, wie z.b. wenn eine Komponente freigegeben wird, wärend irgendwo ein Delay wartet und wenn das dann weiterareitet, dann fehlt diese dort urplötzlich. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:37 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