![]() |
Befehl "Now" / Werte in Zukunft???
Hallo zusammen,
In einer Multithread Server Applikation scheint es zu passieren das der Befehl "Now" einen Wert zurückliefert der in der Zukunft liegt..?!? :roll: Manchmal ein paar Stunden-, manchmal auch gar Monate in der Zukunft... Hat jemand schon ähnliche Erfahrungen gemacht? Kann es sein das der Befehl "Now" nicht thread save ist?? Ich versteh die Welt nicht mehr... :wall: |
Re: Befehl "Now" / Werte in Zukunft???
Bist du sicher, daß der Fehler bei Now liegt?
Wüßte jedenfalls nicht, was daran nicht unbedingt Threadsicher sein sollte ... abgesehn von GetLocalTime, aber da kann ich mir keinen Grund vorstellen, warum dort die Sprünge so groß ausfallen sollten :gruebel:
Delphi-Quellcode:
function Now: TDateTime;
var SystemTime: TSystemTime; begin GetLocalTime(SystemTime); with SystemTime do Result := EncodeDate(wYear, wMonth, wDay) + EncodeTime(wHour, wMinute, wSecond, wMilliseconds); end; |
Re: Befehl "Now" / Werte in Zukunft???
Zitat:
Was bei älteren Delphi Versionen NICHT ging war sowas wie: wert := now + 1; //für morgen dabei bekam man gegebenenfalls falsche Werte - man konnte sich helfen mit: wert1 := now; wert2 := wert1 + 1; vielleicht hängt dein Problem damit zusammen ?!?!? Gruß Matthias |
Re: Befehl "Now" / Werte in Zukunft???
Ich gehe davon aus, daß irgendjemand Now() aufruft und ein anderer das Ergebnis liest - korrekt? Das Lesen/Schreiben könntest du mit einer Critical Section schützen. So umgehst du mögliche Probleme.
Übrigens, wenn Now() Werte einfüllt (ich habe keine Doku zur Hand) die mehr als 32bit groß sind, so dürfte ebendies der Auslöser des Problems sein. Wenn hingegen jeder Thread selber Now() ausführt, hängt es von der Implementation von Now() ab, ob es threadsicher ist. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz