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 2 von 2     12   
musicman56
(Gast)

n/a Beiträge
 
#11

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

  Alt 19. Feb 2013, 09:32
Hallo,

was macht eigentlich "ChangeFileTimeStamp(FileName, FileDate)" ?

Probier's mal damit:

Delphi-Quellcode:
function RF_SetAllFileDates(FName: string;
                            aCreation,
                            aLastAccess,
                            aLastWrite : TDateTime): boolean;
var
  aHandle: integer;
  FT1, FT2, FT3: TFileTime;
  locFT1, locFT2, locFT3: TFileTime;
  ST1, ST2, ST3 : TSystemTime;
begin
  aHandle := FileOpen(FName, fmOpenWrite or fmShareDenyWrite);
  Result := aHandle >= 0;

  if Result then
  try
    DateTimeToSystemTime(aCreation,ST1);
    DateTimeToSystemTime(aLastAccess,ST2);
    DateTimeToSystemTime(aLastWrite,ST3);

    SystemTimeToFileTime(ST1,FT1);
    SystemTimeToFileTime(ST2,FT2);
    SystemTimeToFileTime(ST3,FT3);

    LocalFileTimeToFileTime(FT1,locFT1);
    LocalFileTimeToFileTime(FT2,locFT2);
    LocalFileTimeToFileTime(FT3,locFT3);

    SetFileTime(aHandle,@locFT1, @locFT2, @locFT3);
  finally
    FileClose(aHandle);
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

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

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

  Alt 20. Feb 2013, 21:22
Hallo musicman56,
danke für deine Hilfestellung!
Ich habe das bei mir so umgestellt, aber in meinem eigentlichem Projekt verhält es sich immer noch so, dass die letzte Datei aus der Schleife die richtige Uhrzeit hat, alle anderen haben eine Stunde zuviel...
Weiterhin werden die Uhrzeiten mal gesetzt und dann wieder nicht. Irgendwas stimmt da noch nicht.

Ich habe jetzt ein Testprojekt zusammengeklöppelt. Hier werden die Uhrzeit erst gar nicht gesetzt... Momentan sehe ich das Problem gar nicht.

2 Fragen zum Test-Projekt:
1. Warum werden die Uhrzeiten der Testdateien im Unterordner "Testdateien_zum_umbenennen" nicht gesetzt und
2. wenn die Uhrzeiten gesetzt werden können, sind diese Uhrzeiten dann auch korrekt?

Vielen Dank vorab für Hilfestellung.
Das Test-Projekt ist hier im Anhang.
Angehängte Dateien
Dateityp: zip TEST_Dateiuhrzeiten_aendern.zip (395,2 KB, 4x aufgerufen)
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
musicman56
(Gast)

n/a Beiträge
 
#13

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

  Alt 20. Feb 2013, 22:59
Hallo Jürgen,

probier's mal so:

Delphi-Quellcode:
procedure TFrm_Main.Set_my_global_Time_Variablen(FileName: string);
var
  OldFileDateTime, NewFileDateTime: TDateTime;
  TimeOffset: Double;
begin
  OldFileDateTime := GetFileDate(FileName);
  TimeOffset := Frac(TP_Datei_Offsettime.Time) + (SpEdt_Sekundenzaehler.Value / 86400);
  NewFileDateTime := OldFileDateTime + TimeOffset;
  . . . .
Eines der Probleme mit deinem Code könnte sein: Wenn die Uhrzeit z.B. 23:59 ist, und eine Stunde dazu kommt, dann muss auch der Tag erhöht werden. In diesem Fall wird das TimeOffset > 1 und somit funktionierts (ungetestet)
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

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

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

  Alt 20. Feb 2013, 23:27
Hallo musicman,
danke für deine Antwort.
Leider hilft das auch nicht. Die Uhrzeiten werden einfach nicht gesetzt!
Ich lass mir in dieser Procedure eine Message anzeigen, da ist alles richtig. Mit deinem Code wird die vorhandene Zeit hochgezählt um den Wert aus dem Timepicker.
Dass die Uhrzeiten gar nicht gesetzt werden liegt vermutlich an der Funktion Set_my_New_Time. Allerdings erkenne ich nicht warum es die Funktion nicht tut.

EDIT!!!
Ich hatte angenommen, dass LastAccessTime das Änderungsdatum sei!!! Davon war ich so überzeugt, dass ich gar nicht in Betracht zog da näheres zu lesen. Das Änderungsdatum ist aber LastWriteTime!
Habe erst jetzt die Hilfe von SetFileTime mal *richtig* gelesen...
Sorry, da war ich zu oberflächlich. Thema hat sich somit erledigt. Nun wird auch alles richtig erstellt.
Gute Nacht!
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 (20. Feb 2013 um 23:53 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von juergen
juergen

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

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

  Alt 20. Feb 2013, 23:55
Hiermit setze ich das Thema auf beantwortet.
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
Antwort Antwort
Seite 2 von 2     12   


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 18:26 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