AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Dateien und Ordner auflisten als XML

Ein Thema von SaFu · begonnen am 21. Feb 2009 · letzter Beitrag vom 21. Feb 2009
 
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#1

Dateien und Ordner auflisten als XML

  Alt 21. Feb 2009, 00:31
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:
Ordner1
 -MeineDatei1
 -MeineDatei2
 -MeineDatei3
 
 -Ordner2
  -DeineDatei1
  -DeineDatei2
  -DeineDatei3
  -DeineDatei4
 
 -Ordner3
  -SeineDatei1
  -SeineDatei2
Dann muss ich jetzt per FindFirst und FindNext alle Ordner und Dateien ermitteln.

Aber wie bekomme ich als ergebnis diese Strucktur

Im Hauptverzeichnis Ordner1

Delphi-Quellcode:
<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>
usw.

So bekomme ich alle Dateien aufgelistet aber nur ohne die Unterverzeichnisse

Delphi-Quellcode:
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;
Danke im voraus
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:47 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