AGB  ·  Datenschutz  ·  Impressum  







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

Problem mit Delay

Ein Thema von PaKir · begonnen am 10. Mär 2005 · letzter Beitrag vom 19. Feb 2008
Antwort Antwort
Seite 1 von 3  1 23      
PaKir

Registriert seit: 2. Jan 2005
Ort: Neunkirchen
20 Beiträge
 
Delphi 7 Personal
 
#1

Problem mit Delay

  Alt 10. Mär 2005, 19:04
Ich hab nach einer alternative zu “sleep“ und einer anderen Prozedure gesucht und das hier hier im Forum gefunden Delay revisited. Funktioniert auch eigentlich ganz gut, da die CPU-Auslastung angenehm niedrig bleibt.

Delphi-Quellcode:
procedure Delay(Milliseconds: Integer);
var
  Tick: DWord;
  Event: THandle;
begin
  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;
end;
Jetzt aber zu meinem Problem. Nach ein paar Sekunden kommt immer dieser Fehler bei "Milliseconds := Tick - GetTickcount":
http://img34.exs.cx/img34/3849/unbenannt4np.jpg
Ich hab wirklich überhaupt keine Ahnung warum. Im Normalbetrieb meines Programms ändert sich die Zeit zwar andauernd aber auch bei einem Testprogramm das immer 200msec warten soll kommt der Fehler. Wisst ihr an was das liegen kann.
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Problem mit Delay

  Alt 10. Mär 2005, 19:17
Hi,

versuchs mal so, in dem Du den Typ von "Milliseconds" von Integer zu Int64 änderst.

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
PaKir

Registriert seit: 2. Jan 2005
Ort: Neunkirchen
20 Beiträge
 
Delphi 7 Personal
 
#3

Re: Problem mit Delay

  Alt 10. Mär 2005, 19:35
Habs geändert und jetzt gehts.
Hätt ich auch selbst drauf kommen können.
Hab nur gedacht das das bei so kleinen Werten nicht an sowas liegen kann.

[EDIT]Geht doch nicht. Der Fehler kommt zwar nicht mehr so oft aber er kommt[/EDIT]
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Problem mit Delay

  Alt 10. Mär 2005, 20:03
Zitat von PaKir:
Habs geändert und jetzt gehts.
Ob das die Lösung war, ist die Frage. Lass das Programm mal mehrere Stunden laufen. MSDN-Library durchsuchenGetTickCount liefert auch nur einen DWORD zurück. Ich sehe im Moment nichts, warum ein Int64 benötigt würde.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
v2afrank

Registriert seit: 9. Mai 2005
Ort: Bocholt
573 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Problem mit Delay

  Alt 18. Feb 2008, 10:16
Ich weiß zwar, dass der Thread hier ewig alt ist, abe gibt es dafür schon eine Lösung ?
Ich habe das Problem jetzt nämlich genauso. Interessanterweise taucht das Problem nur auf meinem XP Rechner auf. Unter Windows 2000 habe ich das Problem nicht
  Mit Zitat antworten Zitat
Benutzerbild von Xong
Xong

Registriert seit: 9. Jan 2008
186 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Problem mit Delay

  Alt 18. Feb 2008, 10:20
Zitat von v2afrank:
Ich weiß zwar, dass der Thread hier ewig alt ist, abe gibt es dafür schon eine Lösung ?
Ich habe das Problem jetzt nämlich genauso. Interessanterweise taucht das Problem nur auf meinem XP Rechner auf. Unter Windows 2000 habe ich das Problem nicht
Der gleiche Code?
  Mit Zitat antworten Zitat
v2afrank

Registriert seit: 9. Mai 2005
Ort: Bocholt
573 Beiträge
 
Delphi XE2 Professional
 
#7

Re: Problem mit Delay

  Alt 18. Feb 2008, 10:30
Ja, genau der gleiche Code. Als Delay habe ich 100 übergeben
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#8

Re: Problem mit Delay

  Alt 18. Feb 2008, 10:41
Delphi-Quellcode:
// Überlaufprüfung muss abgeschaltet werden:
{$Q-}
procedure Delay(Milliseconds: Integer);
...
Andreas
  Mit Zitat antworten Zitat
v2afrank

Registriert seit: 9. Mai 2005
Ort: Bocholt
573 Beiträge
 
Delphi XE2 Professional
 
#9

Re: Problem mit Delay

  Alt 18. Feb 2008, 10:45
Ok,
danke für den Tipp werde ich machen. Aber was genau passiert denn da ?
Wenn das wirklich die Lösung ist ist sollte man dann nich auch den Beitrag in der Codelib ändern ?
  Mit Zitat antworten Zitat
Benutzerbild von Xong
Xong

Registriert seit: 9. Jan 2008
186 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Problem mit Delay

  Alt 18. Feb 2008, 10:49
Delphi-Quellcode:
procedure Delay(Milliseconds: Cardinal);
var
  Tick: DWord;
  Event: THandle;
begin
  Event := CreateEvent(nil, False, False, nil);
  try
    Tick := GetTickCount + 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;
end;
Ich kann es mir nur so erklären, dass GetTickCount einen vorzeichenlosen Integerwert zurückliefert, "Milliseconds" aber VZ-behaftet ist. Mit diesem Code müsste das Problem behoben sein.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 04:37 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