Forum: Win32/Win64 API (native code)
by marabu,
2. Jun 2008
Moin,
welche Akrobatik (TZ, DST) du in deiner Funktion anstellst, hängt nur vom übergebenen Wert ab.
Wenn du mit dieser Funktion die CountDown-Zeit ermitteln willst, dann musst du aber die Differenz anders bilden:
// TempFileTime := TFileTime(Int64(CurrentFileTime) - Int64(TempFileTime));
TempFileTime := TFileTime(Int64(TempFileTime) - Int64(CurrentFileTime));
Forum: Win32/Win64 API (native code)
by marabu,
1. Jun 2008
Die Subtraktion ist schon in Ordnung.
Eine mögliche Fehlerquelle ist deine Verwendung von GetLocalTime(), wenn der beim Aufruf übergebene Zeitwert eine UTC-Zeit ist. Die Funktion FileTimeToSystemTime() arbeitet nur auf einem bestimmten Wertebereich.
Lass dir doch die Zwischenergebnisse mal anzeigen und benutze SysErrorMessage(GetLastError).
Forum: Win32/Win64 API (native code)
by marabu,
1. Jun 2008
Hallo Martin,
der Name deiner Funktion zeigt mir, dass du schon weißt, dass die Differenz zweier Zeitpunkte die Länge des Zeitintervalls angibt. Du kannst diesen Wert ruhig in ein Datum aus dem Mittelalter konvertieren, musst dir halt nur über die Bedeutung der Werte in SYSTEMTIME im klaren sein.
Gute Nacht.
Forum: Win32/Win64 API (native code)
by marabu,
1. Jun 2008
Hallo,
ein Problem entsteht, wenn du zwei FileTime-Werte voneinander abziehst: Es entsteht ein Zeitintervall. Du kannst ein Zeitintervall zwar wieder in eine SystemTime konvertieren, aber das Ergebnis macht eigentlich keinen Sinn.
Nachdenkliche Grüße