AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Ordentlicher Dateibaum

Ein Thema von R56 · begonnen am 16. Mai 2012 · letzter Beitrag vom 17. Mai 2012
Antwort Antwort
R56

Registriert seit: 8. Mai 2012
8 Beiträge
 
#1

Ordentlicher Dateibaum

  Alt 16. Mai 2012, 20:44
Ich möchte einen Dateibaum als Textdatei schreiben, ähnlich wie der von DOS/CMD. (tree /f Path)
Jedoch komme ich nicht weiter, als das pure nacheinander Stapeln der Verzeichnisse und Dateien:


Code:
Verzeichniss

Datei
Datei

UnterVerzeichnis

Datei
Datei

etc.

Was ich machen möchte:

Verzeichnis
├─UnterVerzeichnis
│ └───Datei
└───Datei

Danke, für die, die mir helfen würden.

Geändert von R56 (16. Mai 2012 um 20:47 Uhr)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

AW: Ordentlicher Dateibaum

  Alt 16. Mai 2012, 21:03
Code:
1:Verzeichnis
1:Datei
1:Datei
2:UnterVerzeichnis
2:Datei
2:Datei
3:UnterDingens
3:Datei
1:Verzeichnis2
Edit:

Guck dir mal den Aufbau von *.cnt Dateien die an einigen *.hlp Dateien dabei sind. Sie speichern ihren Baum in einer ähnlichen Form. Die Zahl gibt die Tiefe an, der Rest ist ein wenig programmieren.

Geändert von Popov (16. Mai 2012 um 21:08 Uhr)
  Mit Zitat antworten Zitat
R56

Registriert seit: 8. Mai 2012
8 Beiträge
 
#3

AW: Ordentlicher Dateibaum

  Alt 17. Mai 2012, 08:05
Okay das beduetet ich sollte das Dingen jetzt in ein zweidimensionales Array abspeichern und nacheinander aufrufen? (Zuerst alles von 2, dann 3, dann 4... etc. letzlich 1)
Und wie würde ich das mit den Strichen hinbekommen?

Bei mir sieht es momentan so aus:
Delphi-Quellcode:
//Liste
  if FindFirst(Directory + Mask, faAnyFile and not faDirectory, SR) = 0 then try
    repeat
      if not ShowExt then
        SR.Name := ChangeFileExt(SR.Name, '');
      if ShowDir then
        begin
      //Hier versch. Schreibweisen hin!
      List.Add(Directory + SR.Name);
        end
      else
        begin
      //Hier versch. Schreibweisen hin!
          List.Add(SR.Name);
        end;
    until FindNext(SR) <> 0;
  finally
    FindClose(SR);
  end;

  if WithSubDirs then begin
    if FindFirst(Directory + '*.*', faAnyFile, SR) = 0 then try
      repeat
        if ((SR.attr and faDirectory) = faDirectory) and
           (SR.Name <> '.') and (SR.Name <> '..') then
          ScanDir(Directory + SR.Name + '\');
      until FindNext(SR) <> 0;
    finally
      FindClose(SR);
    end;
  end;
end;

begin
  List.BeginUpdate;
  try
    if ClearList then
      List.Clear;
    if Directory = 'then Exit;
    if Directory[Length(Directory)] <> '\then
      Directory := Directory + '\';
    ScanDir(Directory);
  finally
    List.EndUpdate;
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.915 Beiträge
 
Delphi 12 Athens
 
#4

AW: Ordentlicher Dateibaum

  Alt 17. Mai 2012, 08:58
Du rufst ScanDir ja rekursiv auf. Nun brauchst du der Methode doch nur noch einen zusätzlichen Parameter mitgeben, der die Verzeichnistiefe angibt bzw. gleich den voranzustellenden Text. So ca.:
Delphi-Quellcode:
procedure ScanDir(const APrefix, APath: string);
begin
  ...
  List.Add(APrefix + SR.Name);
  ...
  ScanDir(APrefix + ' ', Directory + SR.Name + '\');
Theoretisch könntest du aus dem Verzeichnis auch direkt die Verzeichnistiefe jedes Mal ermitteln, aber das ist unnötig viel Aufwand.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
R56

Registriert seit: 8. Mai 2012
8 Beiträge
 
#5

AW: Ordentlicher Dateibaum

  Alt 17. Mai 2012, 13:39
Würde das dann nicht nur so aussehen?

Verzeichnis
├Datei
├Datei
UnterVerzeichnis
├Datei
├Datei
  Mit Zitat antworten Zitat
busybyte

Registriert seit: 15. Sep 2006
165 Beiträge
 
#6

AW: Ordentlicher Dateibaum

  Alt 17. Mai 2012, 13:53
Du musst zumindest noch Index und Level hinzufügen.
Besser du nimmmst gleich eine Art Treenode um die entsprechenden Childs und Parents zu verwalten, dann kannst du auch gleich den Data-Pointer mitverwenden um
eventuelle Eigenschaften mitzuziehen.
I love DiscCat
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.915 Beiträge
 
Delphi 12 Athens
 
#7

AW: Ordentlicher Dateibaum

  Alt 17. Mai 2012, 14:06
Würde das dann nicht nur so aussehen?
Naja, wie du es halt programmierst... Das war ja nur ein Beispiel...
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Antwort Antwort

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 13:43 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