Announcement

Collapse
No announcement yet.

Alle dateien eines Verzeichnisses einlesen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Alle dateien eines Verzeichnisses einlesen

    Hallo,

    ich muss alle Dateien (ggf. nur die mit vorher definierten Endungen) eines Verzeichnisses einlesen und in einer Ansicht zur Auswahl anbieten. Ich habe schonmal hier gestöbert, aber nichts finden können. Hat jemand ein paar Tips ??

    Heiko

  • #2
    Hi PM,<br>

    <PRE>
    Diese Funktion liest rekursiv alle Dateinamen eines Ordners und dessen Unterverzeichnisse in eine Stringliste ein und gibt außerdem als Result die Gesamtgröße des Verzeichnisbaumes zurück:

    var VerzListe : TStringList;

    function VerzGroesse(Verzeichnis:string):longint;
    var SR : TSearchRec;
    Groesse : longint;
    begin
    Groesse:=0;
    if Verzeichnis[length(Verzeichnis)]<>'\' then
    Verzeichnis:=Verzeichnis+'\';
    if FindFirst(Verzeichnis+'*.*',$3F,SR)=0 then begin
    repeat
    if ((SR.Attr and faDirectory)>0) and (SR.Name<>'.') and (SR.Name<>'..') then
    Groesse:=Groesse+VerzGroesse(Verzeichnis+SR.Name)
    else
    Groesse:=Groesse+SR.Size;
    if (SR.Name<>'.') and (SR.Name<>'..') then
    VerzListe.Add(Verzeichnis+SR.Name);
    until FindNext(SR)<>0;
    FindClose(SR);
    end;
    Result:=Groesse;
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    VerzListe:=TStringList.Create;
    Label1.Caption:=IntToStr(VerzGroesse('C:\Programme '))+' Byte';
    ListBox1.Items.Assign(VerzListe);
    VerzListe.Free;
    end;
    </PRE>
    <br>cu Michae

    Comment


    • #3
      Hallo Michael,<br>

      es gibt übrigens die nette Delphi Funktion <b>IncludeTrailingBackslash</b>, die Konstrukte wie:
      <pre>
      if Verzeichnis[length(Verzeichnis)]<>'\' then
      Verzeichnis:=Verzeichnis+'\';
      </pre>
      überflüssig macht ;-)<p>
      Gruß<br>
      Luc

      Comment


      • #4
        Hi Lucas,<br>das kann ja jeder ;-

        Comment

        Working...
        X