Einzelnen Beitrag anzeigen

Schorschi5566

Registriert seit: 6. Feb 2006
197 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

Delay zu langsam?

  Alt 17. Jun 2010, 17:37
Hallo DP,

wenn richtig viel los ist, ist Delay von Hagen recht langsam. Jedenfalls viel langsamer als ich erwartet hätte.

Folgende Schleife dauert mit Sleep und Application.ProcessMessages ca. 5000ms. Die gleiche Schleife dauert ca. 7500ms mit Delay, wenn man etwas mit der Maus "rumrührt".

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  btnResetClick(Self);
  btnStartClick(Self);
  for i := 1 to 500 do // ungefähr 5 Sekunden, sollte man meinen.
  begin
// Delay(10);
    Sleep(10);
    Application.ProcessMessages;
  end;
  btnStopClick(Self);
end;
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;
      if Application.Terminated then Exit;
      Milliseconds := Tick - GetTickCount;
    end;
  finally
    CloseHandle(Event);
  end;
end;
Ist an meinem Delay was falsch oder ist das normal und so gewollt?


Grüße,
Uwe

EDIT: Liegt wohl an der zu geringen Auflösung von 10ms...
Uwe

Geändert von Schorschi5566 (17. Jun 2010 um 17:42 Uhr)
  Mit Zitat antworten Zitat