![]() |
Datei-Änderungsuhrzeit in einer Schleife ändern, 1 Stunde zuviel...
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:
Mit den ganzen Datumsfunktionen stehe ich eh etwas auf Kriegsfuß, allzumal wenn man wenig damit arbeitet.
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; Kann mir hier jemand den richtigen Schubser geben? Vielen Dank! |
AW: Datei-Änderungsuhrzeit in einer Schleife ändern, 1 Stunde zuviel...
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 |
AW: Datei-Änderungsuhrzeit in einer Schleife ändern, 1 Stunde zuviel...
@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.:oops: |
AW: Datei-Änderungsuhrzeit in einer Schleife ändern, 1 Stunde zuviel...
Zitat:
MfG Dalai |
AW: Datei-Änderungsuhrzeit in einer Schleife ändern, 1 Stunde zuviel...
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? |
AW: Datei-Änderungsuhrzeit in einer Schleife ändern, 1 Stunde zuviel...
Hallo Angel4585,
danke für deine Unterstützung!:thumb: 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 |
AW: Datei-Änderungsuhrzeit in einer Schleife ändern, 1 Stunde zuviel...
Nach einem intensiveren Blick auf deinen Code fiel mir dies noch auf:
Delphi-Quellcode:
Gibt es zwei davon oder ist das nur ein Versehen/Vertipper?
[...] SpEdt_Sekundenzaehler.Value [...]
NewFTime := Start_Time + (SpinEdit_Sekundenzaehler.Value / 86400); MfG Dalai |
AW: Datei-Änderungsuhrzeit in einer Schleife ändern, 1 Stunde zuviel...
Hallo Dalai ,
:oops: ist ein versehen, nur hier... |
AW: Datei-Änderungsuhrzeit in einer Schleife ändern, 1 Stunde zuviel...
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? |
AW: Datei-Änderungsuhrzeit in einer Schleife ändern, 1 Stunde zuviel...
du meintest wahrscheinlich Frac(). Leider hilft das auch nicht weiter, weder mit SpEdt_Sekundenzaehler.Time noch mit SpEdt_Sekundenzaehler.Value noch mit Frac(NewFTime)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:16 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