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...