AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

filtetime - filetime??

Ein Thema von lbccaleb · begonnen am 1. Jun 2008 · letzter Beitrag vom 2. Jun 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#1

filtetime - filetime??

  Alt 1. Jun 2008, 21:40
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
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: filtetime - filetime??

  Alt 1. Jun 2008, 21:43
Hilfe lesen:
Zitat:
Remarks
It is not recommended that you add and subtract values from the SYSTEMTIME structure to obtain relative times. Instead, you should

- Convert the SYSTEMTIME structure to a FILETIME structure.
- Copy the resulting FILETIME structure to a ULARGE_INTEGER structure.
- Use normal 64-bit arithmetic on the ULARGE_INTEGER value.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#3

Re: filtetime - filetime??

  Alt 1. Jun 2008, 21:45
Wie wärs, wenn du statt FileTime TDatetime nimmst?

Delphi-Quellcode:
x := EncodeTime(5, 30, 0, 0);
x := x + EncodeTime(0,30,0,0);
Caption := TimeToStr(x);
Ergebniss: 6:00 Uhr

rollstuhlfahrer
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: filtetime - filetime??

  Alt 1. Jun 2008, 21:48
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
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: filtetime - filetime??

  Alt 1. Jun 2008, 21:49
Zitat von Luckie:
Hilfe lesen:
Zitat:
Remarks
It is not recommended that you add and subtract values from the SYSTEMTIME structure to obtain relative times. Instead, you should

- Convert the SYSTEMTIME structure to a FILETIME structure.
- Copy the resulting FILETIME structure to a ULARGE_INTEGER structure.
- Use normal 64-bit arithmetic on the ULARGE_INTEGER value.
ja so hab ich es ja gemacht, nur funzt das nicht wirklich, hab mal nen code angehangen, vllt kann mir da jemand weiter helfen...

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;
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: filtetime - filetime??

  Alt 1. Jun 2008, 21:53
Zitat von marabu:
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
und was kann ich tun damits wieder nen sinn ergibt?? ich will ja nur von zwei zeiten den countdown haben!! wie ich da ran komme ist egal, nur es muss halt über TFileTime oder TSystemTime sein!
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: filtetime - filetime??

  Alt 1. Jun 2008, 22:17
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.
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: filtetime - filetime??

  Alt 1. Jun 2008, 22:21
Zitat von marabu:
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.
das versteh ich irgend wie nicht oO

das kann doch nicht so schwierig sein, wo haperts denn?? bin das denn falsch angegangen mit minus rechnen oder wie??
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: filtetime - filetime??

  Alt 1. Jun 2008, 22:27
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).
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: filtetime - filetime??

  Alt 1. Jun 2008, 22:34
also muss ich wie hier verfahren mit der conversation??

zeitzonen

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
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz