![]() |
Dateien und Ordner auflisten als XML
Abend,
Und zwar habe ich folgendes Problem, ich möchte gerne Ordner und die darin liegenden Dateien auflisten lassen und zwar in einer XML Strucktur. Wenn ich z.b. so eine Ordnerstrucktur habe
Delphi-Quellcode:
Dann muss ich jetzt per FindFirst und FindNext alle Ordner und Dateien ermitteln.
Ordner1
-MeineDatei1 -MeineDatei2 -MeineDatei3 -Ordner2 -DeineDatei1 -DeineDatei2 -DeineDatei3 -DeineDatei4 -Ordner3 -SeineDatei1 -SeineDatei2 Aber wie bekomme ich als ergebnis diese Strucktur Im Hauptverzeichnis Ordner1
Delphi-Quellcode:
usw.
<files> // dieses File nur im obersten Ordner anstatt des Ordnernamens
<FileName>MeineDatei1</fileName> <FileName>MeineDatei2</fileName> <FileName>MeineDatei3</fileName> </files> <Ordner2> // hier der Ordnername weil es ein Unterverzeichnis ist <FileName>Ordner2/MeineDatei1</fileName> <FileName>Ordner2/MeineDatei2</fileName> <FileName>Ordner2/MeineDatei3</fileName> <FileName>Ordner2/MeineDatei4</fileName> </Ordner2> <Ordner3> // hier der Ordnername weil es ein Unterverzeichnis ist <FileName>Ordner3/MeineDatei1</fileName> <FileName>Ordner3/MeineDatei2</fileName> </Ordner3> So bekomme ich alle Dateien aufgelistet aber nur ohne die Unterverzeichnisse
Delphi-Quellcode:
Danke im voraus
procedure FileList(const APath, AExt: string; ARecurse: Boolean; AList: TStrings);
var F : TSearchRec; Path : string; begin Path := IncludeTrailingPathDelimiter(APath); // nur für Delphi 4 und höher! if (ARecurse) and (FindFirst(Path + '*.*', faAnyFile, F) = 0) then try repeat if (F.Name <> '.') and (F.Name <> '..') and ((F.Attr and faDirectory) = faDirectory) then FileList(Path + F.Name, AExt, ARecurse, AList); until FindNext(F) <> 0; finally FindClose(F); end; if FindFirst(Path + AExt, faAnyFile, F) = 0 then try repeat if (F.Name <> '.') and (F.Name <> '..') and ((F.Attr and faDirectory) <> faDirectory) then AList.Add(Path + F.Name); until FindNext(F) <> 0; finally FindClose(F); end; end; procedure TfrmTemplateerstellen.btn1Click(Sender: TObject); var i: integer; s :TStringList; begin s:= TStringList.Create(); try Mmo1.Lines.BeginUpdate; try Mmo1.Lines.Clear; FileList(IncludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0)) + edtDirectoryName.Text) ,'*.*',True,s); for i := 0 to Pred(s.Count) do Mmo1.Lines.Add('<filename>'+ExtractFileName(s[i])+'</filename>'); finally Mmo1.Lines.EndUpdate; end; finally s.Free; end; end; |
Re: Dateien und Ordner auflisten als XML
Rat mal wofür der Parameter ARecurse steht... ;)
|
Re: Dateien und Ordner auflisten als XML
Der steht aber auf true.
|
Re: Dateien und Ordner auflisten als XML
Hallo Sascha, :hi:
vieleicht nicht das eleganteste: - in FileListbox1 alle Ordner auflisten in FileListBox2 den Inhalt des Ordners dazu. - beim Erzeugen der XML die File Listboxen durchlaufen und in die entsprechende Form bringen - Wenn der Index der FileListBox1 auf 0 steht trägst du als Wert einfach was anderes ein als den Ordnernamen. ...der erste Eintrag soll ja anders sein oder ? :gruebel: bis dann... |
Re: Dateien und Ordner auflisten als XML
Jetzt hab ich das Problem erst verstanden :wall:
Delphi-Quellcode:
Ungetestet.
procedure TfrmTemplateerstellen.btn1Click(Sender: TObject);
var i: integer; s :TStringList; sPath: string; begin s:= TStringList.Create(); try Mmo1.Lines.BeginUpdate; try Mmo1.Lines.Clear; sPath := IncludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0)) + edtDirectoryName.Text); FileList(sPath ,'*.*',True,s); for i := 0 to Pred(s.Count) do Mmo1.Lines.Add('<filename>'+Copy(s[i],Length(sPath) + 1,Length(s[i]))+'</filename>'); finally Mmo1.Lines.EndUpdate; end; finally s.Free; end; end; |
Re: Dateien und Ordner auflisten als XML
Zitat:
|
Re: Dateien und Ordner auflisten als XML
Danke genau so war es gemeint
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:02 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