AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Dateidatum setzen

Ein Thema von API · begonnen am 27. Aug 2009 · letzter Beitrag vom 29. Nov 2009
Antwort Antwort
API

Registriert seit: 18. Apr 2004
616 Beiträge
 
#1

Dateidatum setzen

  Alt 27. Aug 2009, 05:56
Hi,

Eine Textdatei soll geändert werden, ohne dass das Dateidatum geändert wird (primär LastWriteTime)
Die Datei wird geladen, das Dateidatum ausgelesen, die Datei wird geändert (durch den User) und danach wieder gespeichert und
das alte Dateidatum gesetzt.

Leider wird das alte Dateidatum nicht wieder gesetzt. Woran könntest das liegen?

Delphi-Quellcode:
private
  FCurFile: string;
  FModifiedDateTime : TDateTime;
  FCreationTime : FileTime;
  FLastAccessTime : FileTime;
  FLastWriteTime : FileTime;
Delphi-Quellcode:
procedure GetFileDateTime(const TheFile: string; var fCreationTime, fLastAccessTime, fLastWriteTime: FileTime);
var
  fh : THandle;
begin
  fh := FileOpen(TheFile, fmOpenRead);
  GetFileTime(fh, @fCreationTime, @fLastAccessTime, @fLastWriteTime);
  CloseHandle(fh);
end;

procedure SetFileDateTime(const TheFile: string; fCreationTime, fLastAccessTime, fLastWriteTime: FileTime);
var
  fh : THandle;
  fn : string;
begin
  fh := FileOpen(TheFile, fmOpenRead);
  SetFileTime(fh, @fCreationTime, @fLastAccessTime, @fLastWriteTime);
  CloseHandle(fh);
end;

// Datei Laden und FileDateTime auslesen
procedure TForm1.FileListBox1Click(Sender: TObject);
begin
  FCurFile := FileListBox1.Items[FileListBox1.ItemIndex];
  Memo1.Lines.LoadFromFile(FCurFile);
  GetFileDateTime(FCurFile, fCreationTime, fLastAccessTime, fLastWriteTime);
end;

// Datei speichern und altes FileDateTime setzen
procedure TForm1.btnSaveClick(Sender: TObject);
begin
  if FCurFile <> 'then
  begin
    Memo.Lines.SaveToFile(FCurFile);
    SetFileDateTime(FCurFile, fCreationTime, fLastAccessTime, fLastWriteTime);
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
39.653 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Dateidatum setzen

  Alt 27. Aug 2009, 06:53
Zitat von API:
primär LastWriteTime
SetFileTime(fh, nil, nil, @fLastWriteTime);

was sagt FileOpen, also welchen Wert hat fh und was sagt GetLastError nach FileOpen und SetFileTime?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#3

Re: Dateidatum setzen

  Alt 27. Aug 2009, 07:03
In deiner Funktion SetFileDateTime musst du fmOpenRead durch fmOpenReadWrite oder fmOpenWrite ändern.
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
39.653 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Dateidatum setzen

  Alt 27. Aug 2009, 07:20
Zitat von Sprint:
In deiner Funktion SetFileDateTime musst du fmOpenRead durch fmOpenReadWrite oder fmOpenWrite ändern.
OK, bei diesem komischen OpenFile kann man dieses zwar nicht getrennt eingeben,
aber eigentlich braucht er ja nur FILE_WRITE_ATTRIBUTES, welches hoffentlich in fmOpen...Write enthalten ist.

Aber die falschen/fehlenden "Rechte" hätte ihm GetLastError auch mitgeteilt
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#5

Re: Dateidatum setzen

  Alt 27. Aug 2009, 08:18
Zitat von himitsu:
Aber die falschen/fehlenden "Rechte" hätte ihm GetLastError auch mitgeteilt
Im gesamten Quelltext ist keine Fehlerbehandlung. Da kann ja noch mehr schief gehen.
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
39.653 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Dateidatum setzen

  Alt 27. Aug 2009, 08:54
Was denkst du denn, warum ich ihn über die Fehlerbehandlung versuchte an den Fehler heranzuführen?
(vielleicht prägt sich das dann ein und er nutzt es dann öfters mal )
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
API

Registriert seit: 18. Apr 2004
616 Beiträge
 
#7

Re: Dateidatum setzen

  Alt 29. Nov 2009, 07:18
Zitat von Sprint:
Zitat von himitsu:
Aber die falschen/fehlenden "Rechte" hätte ihm GetLastError auch mitgeteilt
Im gesamten Quelltext ist keine Fehlerbehandlung. Da kann ja noch mehr schief gehen.
Das war ja nur der nackte Quellcode, ohne die try..except etc. Umhüllung
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 11:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf