AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

"FileSetDate" auch für Ordner?

Ein Thema von Helmi · begonnen am 20. Mai 2006 · letzter Beitrag vom 5. Jun 2006
Antwort Antwort
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#1

"FileSetDate" auch für Ordner?

  Alt 20. Mai 2006, 21:44
Hallo,

gibt es die function "FileSetDate" auch für Ordner?

ich möchte gerne das Datum eines Ordners setzen
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.140 Beiträge
 
Delphi 12 Athens
 
#2

Re: "FileSetDate" auch für Ordner?

  Alt 20. Mai 2006, 22:22
Delphi-Quellcode:
Function SetFileAge(Const FileName: AnsiString; Age: TFileTime): Boolean;
  Var F: THandle;

  Begin
    Result := False;
    F := CreateFileA(PAnsiChar(FileName), GENERIC_WRITE,
      FILE_SHARE_READ or FILE_SHARE_WRITE or FILE_SHARE_DELETE, nil, OPEN_EXISTING, 0, 0);
    If F = INVALID_HANDLE_VALUE Then Exit;
    {CreateTime}     Result := SetFileTime(F, @Age, nil, nil);
    {LastAccessTime} Result := SetFileTime(F, nil, @Age, nil);
    {LastWriteTime}  Result := SetFileTime(F, nil, nil, @Age);
    CloseHandle(F);
  End;
Ich hoff ich hab's richtig übersetzt ... der Funktion kannst du Dateien, oder Verzeíchnisse (ohne ein abschliesendes "\") übergeben.

Du mußt dir nur noch raussuchen welche Zeit du ändern willst ... einfach 2 von den 3 Zeilen in der Mitte (die mit {...} am Anfang) rauslöschen

[add]
oder einfach so
Delphi-Quellcode:
Function SetFileAge(Const FileName: AnsiString; Age: Integer): Boolean;
  Var F: THandle;

  Begin
    Result := False;
    F := CreateFileA(PAnsiChar(FileName), GENERIC_WRITE,
      FILE_SHARE_READ or FILE_SHARE_WRITE or FILE_SHARE_DELETE, nil, OPEN_EXISTING, 0, 0);
    If F = INVALID_HANDLE_VALUE Then Exit;
    Result := FileSetDate(F, Age) = 0;
    CloseHandle(F);
  End;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Tiemo

Registriert seit: 12. Jul 2004
19 Beiträge
 
#3

Re: "FileSetDate" auch für Ordner?

  Alt 2. Jun 2006, 19:24
Zitat von himitsu:
Delphi-Quellcode:
Function SetFileAge(Const FileName: AnsiString; Age: TFileTime): Boolean;
  Var F: THandle;

  Begin
    Result := False;
    F := CreateFileA(PAnsiChar(FileName), GENERIC_WRITE,
      FILE_SHARE_READ or FILE_SHARE_WRITE or FILE_SHARE_DELETE, nil, OPEN_EXISTING, 0, 0);
    If F = INVALID_HANDLE_VALUE Then Exit;
    {CreateTime}     Result := SetFileTime(F, @Age, nil, nil);
    {LastAccessTime} Result := SetFileTime(F, nil, @Age, nil);
    {LastWriteTime}  Result := SetFileTime(F, nil, nil, @Age);
    CloseHandle(F);
  End;
Funzt nicht bei Ordnern (bei mir). Es muss heißen:

Delphi-Quellcode:
Function SetFileAge(Const FileName: AnsiString; Age: TFileTime): Boolean;
  Var F: THandle;

  Begin
    Result := False;
    F := CreateFileA(PAnsiChar(FileName), GENERIC_WRITE,
      FILE_SHARE_READ or FILE_SHARE_WRITE or FILE_SHARE_DELETE, nil, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0);
    If F = INVALID_HANDLE_VALUE Then Exit;
    {CreateTime}     Result := SetFileTime(F, @Age, nil, nil);
    {LastAccessTime} Result := SetFileTime(F, nil, @Age, nil);
    {LastWriteTime}  Result := SetFileTime(F, nil, nil, @Age);
    CloseHandle(F);
  End;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.140 Beiträge
 
Delphi 12 Athens
 
#4

Re: "FileSetDate" auch für Ordner?

  Alt 3. Jun 2006, 09:09
Da stellt sich mir nur eine Frage ... bei mir ging es (bei meinen Tests damals) ... was hat FILE_FLAG_BACKUP_SEMANTICS mit Verzeichnissen zu tun
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Tiemo

Registriert seit: 12. Jul 2004
19 Beiträge
 
#5

Re: "FileSetDate" auch für Ordner?

  Alt 5. Jun 2006, 14:53
Zitat von himitsu:
Da stellt sich mir nur eine Frage ... bei mir ging es (bei meinen Tests damals) ... was hat FILE_FLAG_BACKUP_SEMANTICS mit Verzeichnissen zu tun
Bei mir ging der o.g. Code nur für Files. Ich fand dann folgendes:

http://thehacker.host.sk/addtime/addtimethread.html

Windows NT: You can obtain a handle to a directory by calling the CreateFile function with the FILE_FLAG_BACKUP_SEMANTICS flag set, as follows:

hDir = CreateFile (
DirName,
GENERIC_READ,
FILE_SHARE_READ|FILE_SHARE_DELETE,
NULL,
OPEN_EXISTING,
FILE_FLAG_BACKUP_SEMANTICS,
NULL
);

You can pass a directory handle to the following functions:
BackupRead
BackupSeek
BackupWrite
GetFileInformationByHandle
GetFileSize
GetFileTime
GetFileType
ReadDirectoryChangesW
SetFileTime
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:25 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