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