Forum: Programmieren allgemein
by Xong,
18. Feb 2008
Nimm das, Schurke!
procedure Delay(Milliseconds: Cardinal);
var
Tick: Cardinal;
Event: THandle;
begin
Event := CreateEvent(nil, False, False, nil);
try
Tick := Milliseconds;
// Milliseconds wird missbraucht als Zwischenspeicher für GetTickcount
Forum: Programmieren allgemein
by Xong,
18. Feb 2008
Du hast natürlich recht. Ich bin wohl heute etwas unkonzentriert.
Dafür habe ich eine(n) Erklärung(sversuch) für den Überlauf.
Milliseconds := Tick - GetTickcount
Irgendwann wird Tick kleiner GetTickcount. Da aber GetTickcount vorzeichenlos ist, nehme ich an, dass das Ergebnis von "Tick-GetTickcount" ebenfalls vorzeichenlos gespeichert wird. Es kommt also bei der Berechnung zum Überlauf,...
Forum: Programmieren allgemein
by Xong,
18. Feb 2008
Du hast recht. Dann halt so (Ist sogar ´nen Tick schneller. =) ):
procedure Delay(Milliseconds: Cardinal);
var
Tick: DWord;
Event: THandle;
begin
Event := CreateEvent(nil, False, False, nil);
try
Tick := GetTickCount + Milliseconds;
while (Tick > GetTickcount) and
Forum: Programmieren allgemein
by Xong,
18. Feb 2008
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