![]() |
Was könnte die Funktion Now: TDateTime; blockieren?
Ich nutze Delphi 7 unter Windows 7 und habe ein Problem mit dem Code DateTimeToStr(Now) festgestellt.
Prinzipiell möchte ich nur das aktuelle Datum / Zeit ausgeben, wie das gemacht wird ist mir dabei zweitrangig. Wenn es also alternative Wege gibt, würde mir das auch helfen. In einem neuen Projekt funktioniert die Funktion wie gewünscht, in meinem eigentlichen Projekt jedoch leider nicht. Die Zeit wird einmal beim Start ausgelesen, aktualisiert sich aber nicht mehr. Jeder Folgeaufruf von Now liefert den selben Zeitstempel. Leider habe ich keine Idee, wodurch das hervorgerufen werden könnte. Wie könnte ich der Ursache auf den Grund gehen? Habt ihr vielleicht eine Idee oder einen anderen Code um die aktuelle Zeit / Datum auszugeben? Danke! |
AW: Was könnte die Funktion Now: TDateTime; blockieren?
Hast Du vielleicht eine Variable "Now" definiert, die einmal gesetzt wird und dann immer wieder ausgelesen?
(Könnte auch in einer benutzten Unit so definiert sein.) |
AW: Was könnte die Funktion Now: TDateTime; blockieren?
Habe mir jetzt einfach diese Funktion erstellt. Wird am Ende irgendein Bug mit Windows 7 sein, mein Delphi 7 ist ja auch schon in die Jahre gekommen...
Code:
}
function API_GetCurrentDate:string;
var SystemTime1: TSystemTime; begin GetLocalTime(SystemTime1); result:=Format('%.2d.%.2d.%d %.2d:%.2d:%.2d',[SystemTime1.wDay,SystemTime1.wMonth,SystemTime1.wYear,SystemTime1.wHour,SystemTime1.wMinute,SystemTime1.wSecond]) end; |
AW: Was könnte die Funktion Now: TDateTime; blockieren?
Die Funktion ignoriert nur leider meine Datumseinstellungen. Wäre es nicht sinnvoller, wenn die Funktion einen Wert vom Typ TDateTime zurückgeben würde, wie es Now auch tut?
|
AW: Was könnte die Funktion Now: TDateTime; blockieren?
Das sehe ich auch so. Da müsste eigentlich ein 2-Zeiler genügen.
Delphi-Quellcode:
function GiveMeTheCurrentTime: TDateTime;
var SysTime: TSystemTime; begin GetLocalTime(SysTime); Result := SystemTimeToDateTime(SysTime); end; |
AW: Was könnte die Funktion Now: TDateTime; blockieren?
... wäre es nicht sinnvoller die Fehlerursache ausfindig zu machen,
anstatt hier Workarounds zu erstellen? :gruebel: Liebe Grüße, Valle :-) |
AW: Was könnte die Funktion Now: TDateTime; blockieren?
Nun, ein Hinweis wurde ja bereits gegeben. Und wenn schon Workaround, dann aber richtig ;)
|
AW: Was könnte die Funktion Now: TDateTime; blockieren?
Zitat:
|
AW: Was könnte die Funktion Now: TDateTime; blockieren?
Das ist übrigens der Code von Now in Delphi 7:
Delphi-Quellcode:
Ich tippe da auch auf eine zusätzliche Deklaration von Now im aktuellen Scope. Vielleicht hilft eine Suche über alle Dateien des Projekts? Alternativ geht auch der qualifizierte Aufruf:
var
SystemTime: TSystemTime; begin GetLocalTime(SystemTime); with SystemTime do Result := EncodeDate(wYear, wMonth, wDay) + EncodeTime(wHour, wMinute, wSecond, wMilliseconds); end;
Delphi-Quellcode:
DateTimeToStr(Sysutils.Now)
|
AW: Was könnte die Funktion Now: TDateTime; blockieren?
Zitat:
Strg+Linksklick auf dieses "Now" und man sieht wohin es geht, oder einfach mal den Mauszeiger 'nen Sekündchen drüberhalten und in den Hint gucken. Eigentlich bekommt das Code-Insight dieses noch hin, aber notfalls kann man auch mal Debuggen und schauen was passiert. Bevor ich meinen Code mit 'nem Namespace verschandel, schau ich erstmal warum da was vorliegt, welches mich nervt. Vorallem wenn man nicht weiß daß da wirklich ein "falsches" Now rumliegt, dann kann was nicht stimmen, da man eigentlich wissen sollte was wo in seinem Programm ist. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:21 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