Registriert seit: 29. Mai 2002
37.621 Beiträge
Delphi 2006 Professional
|
24. Jan 2003, 01:05
Auf Mathias ist doch verlass.
Hier die Lösung:
Delphi-Quellcode:
function Int32x32To64(const a, b: dword): int64;
begin
Result := int64(a) * int64(b);
end;
function SecsToDateTime(secs: int64): String;
var
ft : TFILETIME;
st : TSYSTEMTIME;
lt : TSYSTEMTIME;
li : int64;
buf1, buf2 : array[0..255] of Char;
begin
if secs = 0 then
begin
result := '';
exit;
end;
st.wYear := 1970;
st.wMonth := 1;
st.wDayOfWeek := 0;
st.wDay := 1;
st.wHour := 1;
st.wMinute := 0;
st.wSecond := 0;
st.wMilliseconds := 0;
SystemTimeToFileTime(st,ft);
{ Version 1 }
{ui.QuadPart := Int32x32To64(PUserInfo11(ui11)^.usri11_last_logon, 10000000)
+ 116444736000000000;
FileTimeToSystemTime(TFileTime(ui),st);
FileTimeToSystemTime(TFileTime(ui),st);}
{ Version 2 }
li := Int32x32To64(secs, 10000000) + 116444736000000000;
ft.dwLowDateTime := DWORD(li);
ft.dwHighDateTime := li shr 32;
FileTimeToSystemTime(TFileTime(ft),st);
SystemTimeToTzSpecificLocalTime(nil, st, lt);
GetTimeFormat(LOCALE_USER_DEFAULT, TIME_FORCE24HOURFORMAT, @lt, nil, buf1, sizeof(buf1));
GetDateFormat(LOCALE_USER_DEFAULT, DATE_SHORTDATE, @lt, nil, buf2, sizeof(buf2));
result := String(buf2)+' / '+String(buf1);
end;
Man, wen ich so langsam schon alles erwähnen muß: Mathias als lebender Debugger, Danial als Tester und Marcel van Brakel als Tester und Helfer. Wenn das so weiter geht, ist die Aboutbox bald größer als das Programmfenster.
Michael Ein Teil meines Codes würde euch verunsichern.
|
|
Zitat
|