![]() |
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
Wie bekomme ich das hin, die Dateien mit Pfaden in eine Stringlist zu schreiben? Beim debuggen habe ich festgestellt das in GetAllFilesInDirectory scheinbar garnichts in die Liste geschrieben wird. Als ich das ganze aber mit einer ListBox probiert habe standen da die Dateien drin.
Und wie mache ich das, dass ich die Dateigröße auslesen kann? Gruß AnyKey |
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
:glaskugel: Du musst Zeile 34 ändern. Und schau Dir die Routine noch einmal genau an. Wenn eine Datei gefunden wird, musst Du halt zusätzlich zu TSearchRec.Name noch TSearchRec.Size auslesen.
|
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
Ist TSearchRec.Time dann die Zeit des letzten Zugriffs? Dann müsste ich nur drei oder eine Liste/n übergeben und die Werte da reinschreiben richtig? Dann könnte ich sie in meine Datenbank schreiben und später damit arbeiten. Das Problem ist nur das mit der Übergabe der liste, irgendwie steht da nichts drin wenn ich eine StringList übergebe. Hat da vielleicht jemand eine Idee?
Was genau meinst du mit Zeile 34? die Schleife in der ich die LastAccessTime auslesen wollte? Das habe ich schon raus genommen. Edit: Vorallem, wie sieht die Time dann überhaupt aus? Da sind ja keine Punkte drin oder? Gruß AnyKey |
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
Das mit Zeile 34 war ironisch gemeint, da Du uns vorenthältst, wie Du die Routine aufrufst. Und an die Zeitangaben kommst Du auf jeden Fall über TSearchRec.FindData (was einem
![]() ![]() |
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
Aso ^^ ok also der Procedure kopf sieht folgendermaßen aus:
Delphi-Quellcode:
Der Aufruf der Funktion dann so:
class procedure TDataWork.GetAllFilesInDirectorys(Directory: string; List: TStrings; ClearList: Boolean);
procedure ScanDir(const Directory: string); var Mask : string; var SR : TSearchRec; begin
Delphi-Quellcode:
=> List ist eine Stringliste
TDataWork.GetAllFilesInDirectorys(Pfad,List,true);
Ist Size denn dann die Dateigröße oder muss ich SR.FindData.nFileSizeHigh nehmen? wo ist bei FileSize und DateTime der Unterschied zwischen High und Low? Den Ersteller einer Datei kann ich darüber aber nicht auslesen soweit ich das gesehen habe oder? Danke für eure Hilfe und Geduld! Edit: ich brauch echt hilfe, komm überhaupt nicht weiter... :( wie muss ich die Liste übergeben, damit sie gefüllt wird? Wenn ich diese Werte ausgelesen habe klappt der rest denke ich! Nur wie man den Ersteller einer Datei ausliest muss ich noch rausfinden, bzw. testen! Gruß AnyKey |
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
Zitat:
Und was den Ersteller/Besitzer angeht dann such mal unter dem Stichwort Active Directory oder ADS. Gruß K-H P.S. Wenn Du Deinen Sourcecode als Staatsgeheimnis behandelst, ist es recht schwer Dir vernünftig zu helfen. |
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
Wozu verlinke ich die Hilfe, wenn diese dann nicht gelesen wird? Und eine Zeitangabe enthält keine Punkte, egal, ob als FileTime oder TDateTime, da es sich um Zahlen handelt. Die Punkte kommen erst bei deren Darstellung ins Spiel, welche man ja z.B. mit FormatDateTime beeinflussen kann.
|
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
Habe mir die Hilfe durchgelesen, war auch so schlau mal in die Delphi Hilfe zu gucken. Naja ich kenn mich mit den sachen halt nicht aus, habe ich noch nie was mit gemacht. Tut mir leid wenn ich es euch unnötig schwer mache, bin froh das ihr mir helft!
Ok, das mit dem Datum und der Größe habe ich jetzt auch so, nur wie kann ich das jetzt in meine Stringlist schreiben, die ist leider immer noch leer und ich weiß nicht warum. Das Debugen hab ich schon probiert, das hilft mir nicht weiter, scheinbar schreibt er garnichts in List... Wäre super wenn mir da noch jemand helfen könnte, das ist dann denke ich der letzte schritt. Das ist di Funktion:
Delphi-Quellcode:
So versuche ich sie Aufzurufen: (wie gesagt mit einer ListBox funktionierts)
class procedure TDataWork.GetAllFilesInDirectorys(Directory: string; List: TStrings; ClearList: Boolean);
procedure ScanDir(const Directory: string); var Mask : string; var SR : TSearchRec; begin Mask := '*.*'; if FindFirst(Directory+Mask,faAnyFile and not faDirectory, SR) = 0 then begin try repeat List.Add(Directory+SR.Name+'#'+IntToStr(SR.FindData.nFileSizeHigh)+'*' +IntToStr(SR.FindData.ftLastAccessTime.dwLowDateTime)); 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); finally List.EndUpdate; end; end;
Delphi-Quellcode:
Wie gesagt die Liste bleibt leer, egal was ich auch schon probiert hab.
var List : TStringList;
List := TStringList.Create; TDataWork.GetAllFilesInDirectorys(Pfad,List,true); Gruß AnyKey |
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
Hallo,
Zitat:
Delphi-Quellcode:
Oder was meintest du ?
var
List: TStringList; begin List:= TStringList.Create; try TDataWork.GetAllFilesInDirectorys(Pfad,List,true); finally List.Free; end; end; Heiko |
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
Ja das meinte ich, aber in meiner Liste steht nichts drin :(
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:11 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