Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Was könnte die Funktion Now: TDateTime; blockieren? (https://www.delphipraxis.net/154292-koennte-die-funktion-now-tdatetime%3B-blockieren.html)

arc 4. Sep 2010 12:27

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!

stahli 4. Sep 2010 12:39

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

arc 4. Sep 2010 15:28

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;
}

Luckie 4. Sep 2010 15:42

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?

DeddyH 4. Sep 2010 18:14

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;

Valle 4. Sep 2010 18:18

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 :-)

DeddyH 4. Sep 2010 18:22

AW: Was könnte die Funktion Now: TDateTime; blockieren?
 
Nun, ein Hinweis wurde ja bereits gegeben. Und wenn schon Workaround, dann aber richtig ;)

Luckie 4. Sep 2010 18:58

AW: Was könnte die Funktion Now: TDateTime; blockieren?
 
Zitat:

Zitat von Valle (Beitrag 1047533)
... wäre es nicht sinnvoller die Fehlerursache ausfindig zu machen,
anstatt hier Workarounds zu erstellen? :gruebel:

Sicher, aber ohne nähere Informationen, können wir da bei kaum helfen.

Uwe Raabe 4. Sep 2010 20:12

AW: Was könnte die Funktion Now: TDateTime; blockieren?
 
Das ist übrigens der Code von Now in Delphi 7:

Delphi-Quellcode:
var
  SystemTime: TSystemTime;
begin
  GetLocalTime(SystemTime);
  with SystemTime do
    Result := EncodeDate(wYear, wMonth, wDay) +
      EncodeTime(wHour, wMinute, wSecond, wMilliseconds);
end;
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:

Delphi-Quellcode:
DateTimeToStr(Sysutils.Now)

himitsu 4. Sep 2010 20:39

AW: Was könnte die Funktion Now: TDateTime; blockieren?
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1047543)
Ich tippe da auch auf eine zusätzliche Deklaration von Now im aktuellen Scope. Vielleicht hilft eine Suche über alle Dateien des Projekts?

Wozu?

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 02:39 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz