Announcement

Collapse
No announcement yet.

GetFileTime

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • GetFileTime

    Hallo! Hat mir jemand ein Beispiel wie ich alle Dateien die in den letzten fünf Tagen geändert wurden (Eigenschaften --> Erstellt im Erstellt Datum ausgeben kann zB. in eine Listbox. Es soll ein komplettes Laufwerk durchsucht werden und die Dateien die mit Pfad und Datum (erstellt) ausgegeben werden. Danke

  • #2
    Hallo,

    wenn die <b>Microsoft Scripting Runtime</b> zur Verfügung steht, kann das <b>FileSystemObject</b> des Betriebssystems verwendet werden, um die Dateien zusammenzusuchen. Dazu sind die folgenden Schritte notwendig:

    1. Typbibliothek der Scription Engine in Delphi importieren, indem über <i>Projekt | Typbibliothek importieren </i>der Eintrag <b>Microsoft Scripting Runtime (Version 1.0)</b> aus der Liste ausgewählt wird (Datei C:\WINNT\System32\scrrun.dll). Mit dem Button <i>Unit anlegen</i> generiert Delphi die Importunit für die Typbibliothek, die in der Uses-Klausel dann aufgeführt wird.

    2. Instanz dieses Objekts anfordern, das Startverzeichnis sowie die Filterkriterien definieren. Das FileSystemObject stellt eine Vielzahl von Filterkriterien zur Verfügung. Das folgende Beispiel sucht alle Dateien, die nicht älter als 5 Tage sind im angegebenen Verzeichnis und zeigt sie in der Listbox zusammen mit dem Erstellungsdatum an:
    <pre>
    uses ComObj, ActiveX, Scripting_TLB;

    procedure TForm1.Button1Click(Sender: TObject);
    var
    pEnum : IEnumVARIANT_D4 ;
    vOut : VARIANT ;
    dwRetrieved : DWORD ;
    hRes : HResult;
    aFSO : IFileSystem;
    aFld : IFolder;
    aFiles : IFileCollection;
    aFile : IFile;
    iDone : Integer;
    vDOCPath : OleVariant;
    begin
    iDone := 0;
    aFSO := CoFileSystemObject.Create;
    aFld := aFSO.GetFolder('C:\Temp');
    aFiles := aFld.Files;
    // Alle Dateien aus diesem Verzeichnis prüfen
    pEnum := aFiles.Get__NewEnum as IEnumVARIANT_D4;
    while (TRUE) do
    begin
    hRes := pEnum.Next(1, vOut, @dwRetrieved);
    if hRes <> S_OK then
    Break;
    aFile := IDispatch(vOut) as IFile;
    if (aFile.DateCreated > (Now - 5) ) then
    begin
    vDOCPath := aFile.Path;
    ListBox1.Items.Add(Format('%s vom %s',[vDOCPath,
    DateTimeToStr(aFile.DateCreated)]));
    Inc(iDone);
    StatusBar1.SimpleText := IntToStr(iDone);
    end;
    end;
    end;
    </pre>
    Über die IFolder-Eigenschaft <b>SubFolders</b> kann die Kollektion mit den Unterverzeichnissen angesprochen werden

    Comment

    Working...
    X