![]() |
Rekursives durchsuchen und Letzten Dateizugriff auslesen
Hallo,
ich habe folgendes Problem, ich will einen Ordner rekursiv durchsuchen und für alle gefundenen Dateien den Letzten Zugriff auslesen. Die Funktion sieht folgendermaßen aus:
Delphi-Quellcode:
Die Frage ist jetzt wo muss ich die mit => gekennzeichnete schleife hinpacken, damit ich die Liste durchgehen kann und ich den Letzten Dateizugriff für alle Listeneinträge auslesen kann.
class procedure TDataWork.GetAllFilesInDirectorys(Directory: string; List: TStrings; ClearList: Boolean);
var LastAccess : string; var i : Integer; procedure ScanDir(const Directory: string); var Mask : string; var SR : TSearchRec; begin // ToDo: Mask := '*.*'; if FindFirst(Directory+Mask,faAnyFile and not faDirectory, SR) = 0 then begin try repeat List.Add(Directory+SR.Name); until FindNext(SR) <> 0; finally FindClose(SR); end; end; if FindFirst(Directory+Mask,faAnyFile,SR) = 0 then begin try repeat if ((SR.Attr and faDirectory) = faDirectory) and (SR.Name <> '.') and (SR.Name <> '..') then begin ScanDir(Directory+SR.Name+'\'); end; until FindNext(SR) <> 0; finally FindClose(SR); end; end; end; begin List.BeginUpdate; try if ClearList then begin List.Clear; end; if Directory = '' then begin Exit; end; if Directory[Length(Directory)] <> '\' then begin Directory := Directory+'\'; end; Directory := Directory+'\'; ScanDir(Directory); // muss das Auslesen der AccessTime hier gemacht werden? überprüfen!!!! => for i := 0 to List.Count - 1 do => begin => LastAccess := GetLastAccessTime(List.Strings[i]); => end; finally List.EndUpdate; end; end; Hoffe es kann jemand helfen! Gruß AnyKey |
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
Ich glaube das sinnvollste ist wenn der versuchst den aktuellen Quelltext zu verstehen. Wenn du soweit bist hat sich die eigentliche Frage erledigt.
|
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
erstmal ein paar Fragen:
Wozu 2 Schleifen, zum Auslesen des Ordners? Es wird beide Male mit der selben Maske gesucht, demnach könnte man Dateien und Ordner im selben Surchgang suchen. Zitat:
FindFirst und FindNext stellen dieses Datum doch auch zur Verfügung. Ansonsten bin ich Bärchens Meinung. Schau dir vorallem mal folgende Punkte an: - den Typ von LastAccess - Rückgabewert von GetLastAccessTime wirklich ein String? - und was willst du überhaupt mit dem Datum machen - den Nutzen der Variable Mask - und dann auch noch das: Zitat:
|
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
Ok, und wie komme ich an dieses Datum dann dran? Wie müsste ich die beiden Schleifen umbauen um nur noch eine zu haben, muss zugeben ich habe den Quellcode aus dem internet kopiert, blick also noch nich so ganz durch, wäre nett wenns mir mal einer kurz erklären könnte.
Gruß AnyKey |
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
Also, GetlastAccessTime gibt wirklich einen String zurück.
Also passt der Typ von LastAccess auch. Das Datum muss mit einem anderen Datum verglichen werden. Wie kann ich die funktion verbessern und wie komme ich wie du gesagt hast leichter und besser an das Datum des letzten Dateizugriffs heran? Gruß AnyKey |
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
Bitte unterlasse das Pushen von Beiträgen innerhalb von 24 Stunden. :)
|
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
Danke für den hinweis, werds berücksichtigen ;) hilft mir aber nich weiter... :P
|
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
Hallo,
wo ist überhaupt das Problem ? Du hast eine gefüllte Liste nach ScanDir(Directory); mit Dateinamen und willst jetzt von jeder Datei das letzte Zugriffsdatum ? Heiko |
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
Genau, das ist mein Problem, außerdem muss ich dann zu jeder Datei den Ersteller auslesen, das wird dann alles in eine Datenbank geschrieben.
Wäre super wenn mir jemand dabei helfen könnte, ich blick im moment garnicht mehr durch. Edit: Ok, ich habe einen neuen Plan, ich mach das mit dem LastAccess nachdem ich die Pfade durch die Rekursive suche ausgelesen habe, nur ist jetzt die Frage wie komme ich an die Pfade ran? Eine Andere frage wäre noch wie ich dabei oder danach dann auch die Dateigröße/Ordnergröße herausfinden kann. Gruß AnyKey |
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
Meiner Meinung nach hast Du 2 Möglichkeiten:
wobei die erste Möglichkeit duch das mehrmalige Anpacken der Datei natürlich langsamer ist. Gruß K-H edith: Zitat:
Zitat:
Die "Dateigröße" (Summe der Größe der enthaltenen Dateien) bei Verzeichnissen mußt Du allerdings selbst errechnen! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz