![]() |
filtetime - filetime??
hey community,
also ich convertiere systemtime zu filetime (um damit leichter zu rechnen oder ist das schon blödsinn) dann will ich von der filetime (aus der zukunft) die momentane filetime abziehen um quasi "verbleib" counter zu haben! dann das ganze wieder in eine systemtime convertieren... (ich denke hier ligt dann der fehler) kennt sich damit irgenwer aus?? oder weiß jemand wie man das bewerkstelligen kann ohne auf tfiletime zurückgreifen zu müssen also nut mit tsystemtime?? ach ja und das ganze sollte ohne dateutils sein, denn das programm soll so klein wie möglich gehalten werde!! oO |
Re: filtetime - filetime??
Hilfe lesen:
Zitat:
|
Re: filtetime - filetime??
Wie wärs, wenn du statt FileTime TDatetime nimmst?
Delphi-Quellcode:
Ergebniss: 6:00 Uhr
x := EncodeTime(5, 30, 0, 0);
x := x + EncodeTime(0,30,0,0); Caption := TimeToStr(x); rollstuhlfahrer |
Re: filtetime - filetime??
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 |
Re: filtetime - filetime??
Zitat:
und nein, tdatetime kann ich nicht verwenden, dafür muss ich zuviele "grosse" units einbinden, kann also nur mit TSystemTime und TFileTime arbeiten... das hab ich bisher (hardcoded nur zum test)
Delphi-Quellcode:
function GetDifferenzTime(TheTime: TSystemTime): TSystemTime;
var TempTime, CurrentTime: TSystemTime; TempFileTime, CurrentFileTime: FileTime; begin; Result := TheTime; GetLocalTime(CurrentTime); if SystemTimeToFileTime(TheTime, TempFileTime) then if SystemTimeToFileTime(CurrentTime, CurrentFileTime) then begin; TempFileTime := TFileTime(Int64(CurrentFileTime) - Int64(TempFileTime)); if FileTimeToSystemTime(TempFileTime, TempTime) then // hier hat er probleme beim convertieren weil davor wohl schon beim abrechnen was falsch gelaufen ist Result := TempTime else MessageBoxA(0, PChar('convert to systemtime fail'), 'hallocap', MB_OK or MB_ICONEXCLAMATION) end else MessageBoxA(0, PChar('current time fehl'), 'hallocap', MB_OK or MB_ICONEXCLAMATION) else MessageBoxA(0, PChar('temp time fehl'), 'hallocap', MB_OK or MB_ICONEXCLAMATION); end; |
Re: filtetime - filetime??
Zitat:
|
Re: filtetime - filetime??
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. |
Re: filtetime - filetime??
Zitat:
das kann doch nicht so schwierig sein, wo haperts denn?? bin das denn falsch angegangen mit minus rechnen oder wie?? |
Re: filtetime - filetime??
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). |
Re: filtetime - filetime??
also muss ich wie hier verfahren mit der conversation??
![]() und "SystemTimeToTzSpecificLocalTime" verwenden?? edit:
Delphi-Quellcode:
begin;
TempFileTime := TFileTime(Int64(CurrentFileTime) - Int64(TempFileTime)); if FileTimeToSystemTime(TempFileTime, TempTime) then Result := TempTime // hier gibt GetLastError "ungültiger Parameter aus", nur wieso?? end |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz