AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Verzeichnisliste mit definierter Rekursionstiefe erstellen
Thema durchsuchen
Ansicht
Themen-Optionen

Verzeichnisliste mit definierter Rekursionstiefe erstellen

Ein Thema von Gravitar · begonnen am 28. Mai 2009 · letzter Beitrag vom 30. Mai 2009
 
Gravitar

Registriert seit: 8. Okt 2006
94 Beiträge
 
Delphi 7 Enterprise
 
#1

Verzeichnisliste mit definierter Rekursionstiefe erstellen

  Alt 28. Mai 2009, 21:14
Hi,

da ich mir vor kurzem die Finger gebrochen habe, um unter Vista eine Verzeichnisliste (nur Ordner) auszugeben, habe ich hier eine kleine Konsolen-Anwendung geschrieben.

Syntax: Verzeichnisliste <Startverzeichnis> <Outputdatei> <maximale Baumtiefe>

Das Programm legt nach Durchlauf die Outputdatei an (reine Textdatei). Diese enthält dann die Ordner, die je nach Tiefe entsprechend eingerückt sind.

Hier der Code (recht übersichtlich):

Delphi-Quellcode:
program Verzeichnisliste;

{$APPTYPE CONSOLE}

uses
  SysUtils,strutils,classes;

const
  //Um das Programm zu tracen,debuggen sollte Test = true gesetzt werden
  //Dadurch sind keine Kommandozeilenparameter notwendig, sondern es werden
  //Standardwerte gesetzt.
  Test = false;

var
  ProtDatei : TStringList;
  ProtDateiName : string;
  MaxRek,Rekursionstiefe,x : integer;
  Einrueckstring : string = ' ';
  Verzeichnis : ansistring;

Procedure IsFileInDirectory(ADirectory: string; max: integer);
var
  SR: TSearchRec;
begin
  if (ADirectory<>'') and (ADirectory[length(ADirectory)]<>'\') then
    ADirectory:=ADirectory+'\';
  if (FindFirst(ADirectory+'*.*',faDirectory,SR)=0) and
     (rekursionstiefe < max)then
  begin
    repeat
      if (SR.Name<>'.') and (SR.Name<>'..') and (sr.Attr and faDirectory = faDirectory) then
      begin
        if rekursionstiefe = 0 then ProtDatei.Add('');
        ProtDatei.add(leftstr(einrueckstring,Rekursionstiefe*2)+sr.name);
        inc(Rekursionstiefe);
        IsFileInDirectory(ADirectory+SR.Name,max);
      end;
    until FindNext(SR)<>0;
    FindClose(SR);
  end;
  dec(Rekursionstiefe);
end;

begin
  writeln('Verzeichnisliste (c) 2009 Andreas Welzien');
  writeln;
  writeln('Erzeugt eine Liste aller Verzeichniss ab dem angegebenen Pfad (z.B. c:\).');
  writeln('Die Ausgabe erfolgt in der definierten Outputdatei (z.B. Liste.txt).');
  writeln('Über maximale Ordnertiefe (optional) kann die maximale Hierarchietiefe vorgegeben werden.');
  writeln('Wird dieser Parameter nicht vorgegeben, wird immer bis zur maximalen Tiefe reportet.');
  writeln;
  writeln('Aufruf: Verzeichnisliste.exe <Pfad> <Outputdatei> {<maximale Ordnertiefe>}');

  if test then
  begin
    Verzeichnis := 'c:\';
    ProtDateiName := 'test.txt';
    maxrek := 2;
  end
  else
  begin
    Verzeichnis := paramstr(1);
    ProtDateiName := paramstr(2);
    maxrek := strtoint(paramstr(3));
  end;
  ProtDatei := TStringList.Create;
  Rekursionstiefe := 0;
  IsFileinDirectory(Verzeichnis,maxrek);
  protdatei.SaveToFile(ProtDateiName);
  protdatei.Free;
end.
Falls noch jemand Verbesserungspotential entdeckt, nur zu. Ich freue mich auf jede Anregung.

Gruß, Andreas
  Mit Zitat antworten Zitat
 


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 02:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz