![]() |
Probleme mit Ordner auflisten
Also ich habe folgenden Code hier verwendet doch leider hab ich damit einige Probleme. Z.B. werden Ordner mit mehreren Punkten nicht angezeigt und ich hab's immernoch nicht geschafft das Problem zu beheben. Hat jemand ne Ahnung?
Delphi-Quellcode:
Vorhin funktionierte der Aufruf auch aber jetzt hab ich es so versucht und es klappt nicht mehr. Evtl. bin ich einfach zu müde ;)
procedure FindAllFiles(var FileList: TStrings; RootFolder: string; Mask: string =
'*.*'; Recurse: Boolean = True); var SR: TSearchRec; begin if AnsiLastChar(RootFolder)^ <> '\' then RootFolder := RootFolder + '\'; if Recurse then if FindFirst(RootFolder + '*.*', faAnyFile, SR) = 0 then try repeat if SR.Attr and faDirectory = faDirectory then // --> ein Verzeichnis wurde gefunden // der Verzeichnisname steht in SR.Name // der vollständige Verzeichnisname (inkl. darüberliegender Pfade) ist // RootFolder + SR.Name if (SR.Name <> '.') and (SR.Name <> '..') then FindAllFiles(FileList, RootFolder + SR.Name, Mask, Recurse); until FindNext(SR) <> 0; finally FindClose(SR); end; if FindFirst(RootFolder + Mask, faAnyFile, SR) = 0 then try repeat if SR.Attr and faDirectory <> faDirectory then begin // --> eine Datei wurde gefunden // der Dateiname steht in SR.Name // der vollständige Dateiname (inkl. Pfadangabe) ist // RootFolder + SR.Name FileList.Add(RootFolder + SR.Name); end; until FindNext(SR) <> 0; finally FindClose(SR); end; end;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var List:TStrings; begin FindAllFiles(List,'c:\WINNT\*.*'); ListBox1.Items.AddStrings(List); end; Falls jemand eine Methode kennt einen ordner wirklich 100% genau aufzulisten wäre ich sehr dankbar... |
Re: Probleme mit Ordner auflisten
Dank der Code-Lib von Herrn Vollmer hab ich jetzt nen Quellcode gefunden ;)
Delphi-Quellcode:
Ah grad noch nen Fehler von dem Quellcode gefunden ! Es werden Ordner UND Dateien aufgelistet... Statt nur Dateien! Ma gucken ob ich den Fehler noch finde...
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ActiveX, ShlObj; type TForm1 = class(TForm) Button1: TButton; ListBox1: TListBox; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; liste: TStringList; implementation {$R *.dfm} procedure FindeDateien(aPath, aFindMask: String; aWithSub: Boolean; aResult: tStrings); Var FindRec: tSearchRec; Begin If (aPath = '') or (aFindMask = '') or Not Assigned (aResult) Then Exit; If aPath[Length (aPath)] <> '\' Then aPath := aPath + '\'; If FindFirst (aPath + aFindMask, faAnyFile, FindRec) = 0 Then Repeat If (FindRec.Name <> '.') and (FindRec.Name <> '..') Then aResult.Add (aPath + FindRec.Name); Until FindNext (FindRec) <> 0; FindClose (FindRec); If Not aWithSub Then Exit; If FindFirst (aPath + '*.*', faAnyFile, FindRec) = 0 Then Repeat If (FindRec.Name <> '.') and (FindRec.Name <> '..') Then If Boolean (FindRec.Attr and faDirectory) Then FindeDateien (aPath + FindRec.Name, aFindMask, aWithSub, aResult); Until FindNext (FindRec) <> 0; FindClose (FindRec); End; procedure TForm1.Button1Click(Sender: TObject); var x: integer; begin liste := tstringlist.create; FindeDateien('c:\Programme', '*.*', True, liste); for x := 0 to liste.count - 1 do ListBox1.Items.Add(liste[x]); end; end. ... gefunden
Delphi-Quellcode:
If (FindRec.Name <> '.') and (FindRec.Name <> '..') Then
begin if DirectoryExists(aPath + FindRec.Name)=False then aResult.Add (aPath + FindRec.Name); end; |
Re: Probleme mit Ordner auflisten
Hallo, Du "müder" :-)
Nur ein Tip von mir, da ich Deine Frage nicht richtig verstehe. Unter NT und XP, bei verwendung von NTFS, gibt es erweiterte Datei-Attribute. Komprimierte Dateien und Ordner haben dann eben diese erweiterte Attribute. Um alle Dateien in normalen und komprimierten Ordenern oder Verzeichnissen anzuzeigen, benutze ich folgendes in der FindFile-Routine: const MyKompFile = $00000800; // komprimiert MyNormFile = $0000080; // normal und in der Routine dann: Begin FileAttrs := FileAttrs + MyNormFile; if FindFirst(-Verzeichnis- + '\*.*', FileAttrs, sr) = 0 then begin ... end; end; Gruß Jochen |
Re: Probleme mit Ordner auflisten
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:52 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