Hallo,
ich nutze schon seit längerem die in diesem Beitrag gezeigte Funktion zum berechen eines Datums aus dem ActiveDirectory (AccountExpires)
Erst jetzt ist aufgefallen das das Datum nicht immer stimmt.
Ist AccountExpires z.B auf den 28.03.215 eingestellt gibt die Funktion den 29.03.2015 zurück.
Aber auch bei verschiedenen anderen Daten wird das falsche Datum zurückgegeben.
ich Nutze die Funktion genau so:
Delphi-Quellcode:
function GetDateTimeFromLargeInteger(largeIntValue: IADsLargeInteger): TDateTime;
var
int64Value: Int64;
LocalTime: TFileTime;
SystemTime: TSystemTime;
FileTime : TFileTime;
begin
int64Value := largeIntValue.HighPart;
int64Value := int64Value shl 32;
int64Value := int64Value or largeIntValue.LowPart;
FileTime := TFileTime(int64Value);
Result := EncodeDate(1601,1,1);
if FileTimeToLocalFileTime(FileTime, LocalTime) then
if FileTimeToSystemTime(LocalTime, SystemTime) then
Result := SystemTimeToDateTime(SystemTime);
end;
Manchmal wird sogar gar kein Datum (z.B. Datum 02.04.2014) zurückgegeben.
ich habe dies Zeile mal ausgeklammert
int64Value := int64Value or largeIntValue.LowPart;
Dann wurde wieder ein Datum berechnet aber leider auch das Falsche.
Hat jemand einen Tipp was ich ändern muss um zuverlässig das richtige Datum zu erhalten
Besten Dank