![]() |
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
Zeig doch einmal die ganze aufrufende Methode, nicht nur Häppchen davon.
|
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
Hallo,
Breakpoint auf List.Add(Directory+SR.Name+'#'+IntToStr(SR.FindDat a.nFileSizeHigh)+'*' +IntToStr(SR.FindData.ftLastAccessTime.dwLowDateTi me)); und Laufenlassen. Hast du mal c:\test wie im Bsp. von DeddyH angelegt und ein paar Dateien reingepackt. Du verschweigst uns den Code, der nach dem Aufruf kommt, Vielleicht steht dort ja auch ein List.Clear ;) Heiko |
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
Ich hab die Klassenmethode jetzt mal auf das Notwendigste gekürzt, auch wenn das vermutlich nicht fehlerverursachend war:
Delphi-Quellcode:
class procedure TDataWork.GetAllFilesInDirectorys(Directory: string; List: TStrings; ClearList: Boolean);
procedure ScanDir(const Directory: string); var SR : TSearchRec; begin if FindFirst(Directory+'*.*',faAnyFile,SR) = 0 then begin try repeat if (SR.Attr and faDirectory) = faDirectory then begin if (SR.Name <> '.') and (SR.Name <> '..') then ScanDir(IncludeTrailingPathDelimiter(Directory+SR.Name)); end else begin List.Add(Directory+SR.Name+'#'+IntToStr(SR.FindData.nFileSizeHigh)+'*' +IntToStr(SR.FindData.ftLastAccessTime.dwLowDateTime)); end; until FindNext(SR) <> 0; finally FindClose(SR); end; end; end; begin List.BeginUpdate; try if ClearList then begin List.Clear; end; Directory := trim(Directory); if Directory = '' then begin Exit; end; Directory := IncludeTrailingPathDelimiter(Directory); ScanDir(Directory); finally List.EndUpdate; end; end; |
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
Der Code ist ziemlich lang, hab noch mal drüber geguckt und es ist kein List.Clear drin ^^ aber was ich rausgefunden habe ist, dass er nicht einmal was in die Liste schreibt, so wie ich es die ganze Zeit schon vermutet habe.
Delphi-Quellcode:
Hab mich mal aufs wesentliche beschränkt.
var LastAccess : Array of string;
var List : TStringList; var Path : string; var i : Integer; begin List := TStringList.Create; Main.UniConnection1.Connect; if Main.UniConnection1.Connected = True then begin Main.UniQuery1.SQL.Clear; Main.UniQuery1.SQL.Add('SELECT Pfad FROM tblPfad;'); Main.UniQuery1.Execute; Path := Main.UniQuery1.Fields[0].Value; end; TDataWork.GetAllFilesInDirectorys(Path,List,true); setLength(LastAccess,List.Count-1); for i := 0 to List.Count-1 do begin LastAccess[i] := TDataWork.GetLastAccesstime(List.Strings[i]); end; FreeAndNil(List); |
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
Wie ist es so?
Delphi-Quellcode:
var LastAccess : Array of string;
List : TStringList; Path : string; i : Integer; begin Path := ''; try fMain.UniConnection1.Connect; except MessageBox(0,'Datenbankverbindung fehlgeschlagen!','Fehler',MB_ICONWARNING); end; if fMain.UniConnection1.Connected{ = True} then begin fMain.UniQuery1.SQL.Text := 'SELECT Pfad FROM tblPfad'; fMain.UniQuery1.{Execute;}Open; Path := fMain.UniQuery1.Fields[0].Value; fMain.UniQuery1.Close; end; if Path <> '' then begin List := TStringList.Create; try TDataWork.GetAllFilesInDirectorys(Path,List,true); setLength(LastAccess,List.Count{-1}); for i := 0 to List.Count-1 do begin LastAccess[i] := TDataWork.GetLastAccesstime(List{.Strings}[i]); end; finally FreeAndNil(List); end; end; |
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
Ich begreifs einfach nicht, selbst wenn ich den Pfad fest in den Code schreibe funktioniert es nicht. die Liste bleibt leer und ich bekomme bei dem Aufruf von List.Count einen Fehler.
Ich bin am verzweifeln... Danke noch mal für eure Hilfe!! Ich hoff mal ich bekomm das mit eurer Hilfe hin! Edit: Ich hab jetzt mal spasseshalber ein Memo drauf gelegt und dem List zugewiesen, ratet mal was passiert....... es bleibt leer Gruß AnyKey |
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
Zitat:
|
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
Hallo,
Zitat:
Ist die Fehlermeldung geheim oder warum sagst du sie uns nicht ? Steht die vielleicht irgendwo ein List.Free ?; *auf die Textdatei wart* Heiko |
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
Liste der Anhänge anzeigen (Anzahl: 1)
Der Fehler sagt lediglich 'Fehler bei Bereichsprüfung' und er kommt sobald ich dem Array List.Count-1 zuweisen will, was ja nicht gehen kann, da List.Count = 0 ist, obwohl es das ja nicht sein dürfte wenn ich die liste gefüllt habe...
Edit: wie schon gesagt, die Proceduren liegen in zwei verschiedenen Units, die GetAllFilesInDirectory in einer Klasse und der Button zum auslösen in einem Fromular. |
Re: Rekursives durchsuchen und Letzten Dateizugriff auslesen
Wieso die Liste leer bleibt, hab ich nicht erkennen können, aber das SetLength ist so auf jeden Fall falsch. Wieso List.Count - 1 und nicht List.Count?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:31 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