AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fehlermeldung bei Delay

Ein Thema von gargano · begonnen am 29. Mai 2012 · letzter Beitrag vom 29. Mai 2012
Antwort Antwort
gargano

Registriert seit: 2. Okt 2006
76 Beiträge
 
Delphi 2007 Enterprise
 
#1

Fehlermeldung bei Delay

  Alt 29. Mai 2012, 12:02
Hi Leute,
ich verwende für das Delay folgenden Code

Delphi-Quellcode:
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;
Manchmal bekomme ich jedoch eine Exception bei Application.ProcessMessages
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Fehlermeldung bei Delay

  Alt 29. Mai 2012, 12:08
Ein Nullzeiger deutet auf ein nicht initialisiertes Objekt hin.
Markus Kinzler
  Mit Zitat antworten Zitat
gargano

Registriert seit: 2. Okt 2006
76 Beiträge
 
Delphi 2007 Enterprise
 
#3

AW: Fehlermeldung bei Delay

  Alt 29. Mai 2012, 13:18
Ja, schon.

Aber wie kann das bei einem dispatchmessage passieren ?

Gruß
Gargano
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: Fehlermeldung bei Delay

  Alt 29. Mai 2012, 13:41
Dieses Delay wird auch ausschließlich im Hauptthread verwendet?
$2B or not $2B
  Mit Zitat antworten Zitat
gargano

Registriert seit: 2. Okt 2006
76 Beiträge
 
Delphi 2007 Enterprise
 
#5

AW: Fehlermeldung bei Delay

  Alt 29. Mai 2012, 13:57
Nein, sondern in mehreren TDatamodulen, die dynamisch erzeugt werden.
Jedes TDataModule hat da dann sein eigenes Delay.

Gruß
Gargano
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#6

AW: Fehlermeldung bei Delay

  Alt 29. Mai 2012, 14:07
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.

Geändert von hathor (29. Mai 2012 um 14:20 Uhr)
  Mit Zitat antworten Zitat
gargano

Registriert seit: 2. Okt 2006
76 Beiträge
 
Delphi 2007 Enterprise
 
#7

AW: Fehlermeldung bei Delay

  Alt 29. Mai 2012, 14:14
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#8

AW: Fehlermeldung bei Delay

  Alt 29. Mai 2012, 14:17
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.
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:08 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