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:
Delphi-Quellcode:
// TempFileTime := TFileTime(Int64(CurrentFileTime) - Int64(TempFileTime));
TempFileTime := TFileTime(Int64(TempFileTime) - Int64(CurrentFileTime));
Du erhältst sonst negative Werte, die von FileTimeToSystemTime() nicht akzeptiert und mit dem Fehler "Falscher Parameter" quittiert werden.
Das folgende ist deine Idee mit anderen Bezeichnern und einer Signatur, die den Umgang mit Fehlern leichter macht:
Delphi-Quellcode:
function CountDown(stLocal: TSystemTime; var stDiff: TSystemTime): Boolean;
var
stNow: TSystemTime;
ftLocal, ftNow: TFileTime;
iDiff: Int64;
begin;
GetLocalTime(stNow);
Result := SystemTimeToFileTime(stNow, ftNow) and SystemTimeToFileTime(stLocal, ftLocal);
if Result then
begin
iDiff := Int64(ftLocal) - Int64(ftNow);
Result := FileTimeToSystemTime(TFileTime(iDiff), stDiff);
end;
end;
Freundliche Grüße