AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Datei-Änderungsuhrzeit in einer Schleife ändern, 1 Stunde zuviel...
Thema durchsuchen
Ansicht
Themen-Optionen

Datei-Änderungsuhrzeit in einer Schleife ändern, 1 Stunde zuviel...

Ein Thema von juergen · begonnen am 17. Feb 2013 · letzter Beitrag vom 20. Feb 2013
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.175 Beiträge
 
Delphi 11 Alexandria
 
#1

Datei-Änderungsuhrzeit in einer Schleife ändern, 1 Stunde zuviel...

  Alt 17. Feb 2013, 20:19
Hallo zusammen,

ich suche schon eine ganze Weile, finde aber das eigentlich Problem nicht und weiß wohl deswegen auch nicht so recht wonach ich suchen muss.
In einer Schleife ändere ich die Uhrzeit. Dabei wird die Beginn-Uhrzeit als Offset gesetzt und dann die Anzahl der Sekunden, um welche sich die UHrzeit bei jeder neuen Datei erhöhen soll.
Im Debugger werden mir die richtigen Werte der Funktionen angezeigt! Im Betriebssystem wird die letzte Datei aus der Schleife mit der richtigen Uhrzeit angezeigt, alle anderen Dateien sind um genau 1 Stunde zu hoch....

Hier mein relevanter Code:

Delphi-Quellcode:
function GetFileDate(TheFileName: string): TDateTime;
var
  FHandle: integer;
begin
  FHandle := FileOpen(TheFileName, 0);
  try
    Result := (FileDateToDateTime(FileGetDate(FHandle)));
  finally
    FileClose(FHandle);
  end;
end;

procedure TMain_Form.Set_myNewFileTime(FileName: string);
var
  OldFDate, FileDate: TDateTime;
  OldFTime, NewFTime, Start_Time: Double;
begin
  if (Chckb_Uhrzeit_hochzaehlen.Checked) and ((Time_pick_Datei_Offsettime.Text <> '00:00:00') or (SpEdt_Sekundenzaehler.Value <> 0)) then begin
    OldFDate := GetFileDate(FileName);
    Start_Time := (Time_pick_Datei_Offsettime.Value);
    NewFTime := Start_Time + (SpinEdit_Sekundenzaehler.Value / 86400);
    FileDate := Trunc(OldFDate) + NewFTime;
    ChangeFileTimeStamp(FileName, FileDate);
  end;
end;

procedure....
var
  li_Sekundenzaehler : Integer;
beginn
  li_Sekundenzaehler := SpEdt_Sekundenzaehler.Value;
  //Beginn Schleife...
  Set_myNewFileTime(FileName); //
  SpEdt_Sekundenzaehler.Value := SpEdt_Sekundenzaehler.Value + li_Sekundenzaehler;
...
  //Ende Schleife
  SpEdt_Sekundenzaehler.Value := li_Sekundenzaehler;
end;
Mit den ganzen Datumsfunktionen stehe ich eh etwas auf Kriegsfuß, allzumal wenn man wenig damit arbeitet.

Kann mir hier jemand den richtigen Schubser geben?
Vielen Dank!
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#2

AW: Datei-Änderungsuhrzeit in einer Schleife ändern, 1 Stunde zuviel...

  Alt 17. Feb 2013, 20:24
Auch wenn ich nicht wirklich Ahnung habe: Kann es sein, dass die Zeitstempel im Programm bzw. den Funktionen in UTC sind? Das würde genau zu der Stunde Differenz passen.

MfG Dalai
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.175 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Datei-Änderungsuhrzeit in einer Schleife ändern, 1 Stunde zuviel...

  Alt 17. Feb 2013, 20:47
@Dalai,
das denke ich auch dass es irgendwo an der UTC-Zeit liegt. Doch warum hat die letzte Datei aus der Schleife dann den richtigen Uhrzeitwert? Wahrscheinlich hängt es beim
FileGetDate. In der Hilfe steht dass die Betriebssytemuhrzeit ausgelesen wird. Ob das die UTC-Zeit ist?
Momentan weiß ich nicht wie ich das Problem lösen könnte.
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#4

AW: Datei-Änderungsuhrzeit in einer Schleife ändern, 1 Stunde zuviel...

  Alt 17. Feb 2013, 22:07
In der Hilfe steht dass die Betriebssytemuhrzeit ausgelesen wird. Ob das die UTC-Zeit ist?
Nein. UTC ist "die Weltzeit" (und mehr oder minder mit GMT identisch). Die Betriebssysteme nutzen aber in aller Regel lokale Zeit, wobei Linux und Windows unterschiedliche Annahmen darüber machen, mit welcher Zeit die Hardwareuhr läuft (Linux nimmt in aller Regel UTC an, Windows aber lokale Zeit). Ich dachte es mir ja fast, dass die API-Funktionen mit lokaler Zeit arbeiten, aber es hätte ja sein können, dass es irgendwas damit zu tun hat.

MfG Dalai
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#5

AW: Datei-Änderungsuhrzeit in einer Schleife ändern, 1 Stunde zuviel...

  Alt 18. Feb 2013, 10:37
Wieviele Dateien sind das?
Bringt eine andere Anzahl Dateien ein anderes Ergebnis?

Liegt es evtl. an der Datei selbst? Was passiert, wenn eine andere als letztens dran ist?

Time_pick_Datei_Offsettime ist ein TDateTimePicker?
Hast du mal Time_pick_Datei_Offsettime.Time oder Trunc(Time_pick_Datei_Offsettime.Value) anstatt Time_pick_Datei_Offsettime.Value getestet?
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.175 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Datei-Änderungsuhrzeit in einer Schleife ändern, 1 Stunde zuviel...

  Alt 18. Feb 2013, 19:38
Hallo Angel4585,

danke für deine Unterstützung!
Bei Verwendung mit Trunc(Time_pick_Datei_Offsettime.Value) oder Trunc(Time_pick_Datei_Offsettime.Time) kommen ganz falsche Uhrzeiten raus, allerdings wieder mit dem selben Verhalten: Bis auf die letzte Datei haben alle anderen Dateien eine Stunde zuviel.
Das Verhalten habe ich bei anderen Dateien auch bzw. auch bei unterschiedlicher Anzahl von Dateien, die letzte Datei aus der Schleife hat die richtige Uhrzeit, alle anderen haben eine Stunde zuviel...

hmm, Ratlose Grüße
Jürgen
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#7

AW: Datei-Änderungsuhrzeit in einer Schleife ändern, 1 Stunde zuviel...

  Alt 18. Feb 2013, 20:48
Nach einem intensiveren Blick auf deinen Code fiel mir dies noch auf:
Delphi-Quellcode:
[...] SpEdt_Sekundenzaehler.Value [...]
NewFTime := Start_Time + (SpinEdit_Sekundenzaehler.Value / 86400);
Gibt es zwei davon oder ist das nur ein Versehen/Vertipper?

MfG Dalai
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.175 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Datei-Änderungsuhrzeit in einer Schleife ändern, 1 Stunde zuviel...

  Alt 18. Feb 2013, 20:55
Hallo Dalai ,
ist ein versehen, nur hier...
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#9

AW: Datei-Änderungsuhrzeit in einer Schleife ändern, 1 Stunde zuviel...

  Alt 18. Feb 2013, 20:58
Ja natürlich nicht Trunc(), bin ich doof xD Trunc() gibt den ganzzahligen Anteil zurück.
Na wie war das mit dem NACHkomma-anteil? Komm grad nicht drauf, bin schon müde...

mich würde die gesamte procedure mit BeginSchleife und EndSchleife interessieren, liegt da vielleicht das Problem?
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.175 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Datei-Änderungsuhrzeit in einer Schleife ändern, 1 Stunde zuviel...

  Alt 18. Feb 2013, 21:12
du meintest wahrscheinlich Frac(). Leider hilft das auch nicht weiter, weder mit SpEdt_Sekundenzaehler.Time noch mit SpEdt_Sekundenzaehler.Value noch mit Frac(NewFTime)
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)

Geändert von juergen (18. Feb 2013 um 21:18 Uhr)
  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 16:05 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