Einzelnen Beitrag anzeigen

gkoeder

Registriert seit: 15. Jun 2004
84 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Probleme beim setzen des Änderungsdatums einer Datei

  Alt 30. Okt 2007, 17:26
Hab gerade die WinAPI-Funktionen ausprobiert und das setzen des korrekten Dateidatums und Uhrzeit funktioniert nun perfekt! Danke für den Hinweis und die Lösung!

Zitat von himitsu:
...
versuch es mal direkt mit der WinAPI:
Delphi-Quellcode:
var
LineCounter: Integer;
CurrentFile: String;
FileHandle: THandle;
OldFileTime: tFileTime;
begin
...
// Aktuellen Dateinamen in String schreiben zur besseren Übersichtlichkeit
CurrentFile := Memo_FileList.Lines[LineCounter];
// Überprüfen, ob die referenzierte Datei auch wirklich existiert
if FileExists(CurrentFile) then
   Begin
     // Aktuelles Änderungsdatum der Datei erfassen
     FileHandle := CreateFile(PChar(CurrentFile), GENERIC_READ,
       FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, nil);
     GetFileTime(FileHandle, nil, nil, OldFileTime);
     CloseHandle(FileHandle);

     // Änderung an den Dateieigenschaften vornehmen
     If not SetFileSummaryInfo(CurrentFile, FMTID_DocSummaryInformation, PIDDSI_CATEGORY, GetCategoryType) Then
       Memo_Log.Lines.Add('Setzen der Kategorie fehlgeschlagen: ' + CurrentFile);

     // Änderungsdatum wieder in Datei zurückschreiben (UTC-Format)
     FileHandle := CreateFile(PChar(CurrentFile), GENERIC_WRITE,
       FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, nil);
     SetFileTime(FileHandle, nil, nil, OldFileTime);
     CloseHandle(FileHandle);
   end else
   Begin
     Memo_Log.Lines.Add('Datei nicht gefunden: ' + CurrentFile);
   end;
end;
...
Zitat von himitsu:
PS: dieses =true und =false ... wäre besser, wenn du dir solche Vergleiche abgewöhnst
(gibt dazu einige Threads im Forum, warum sowas Probleme beeiten könnte)
und dann hab ich das =false erst übersehn und hab mich grad gewundert warum die Fehlermeldung "Setzen der Kategorie fehlgeschlagen" bei 'nem "positivem"Ergebnis ausgelöst wird. (if not xyz = wenn nicht xy ... versteht sich och leichter ^^)
Hmm ... ich verwende diese Vergleiche relativ häufig, um auf die Rückgabewerte entsprechend reagieren zu können. Wie kann ich dies besser machen bzw. kannst Du mir einen entsprechenden Thread nennen?

Danke!

Gruß
Gerald
  Mit Zitat antworten Zitat