AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Alle Ordner eines Verzeichnises in einer Listbox auflisten
Thema durchsuchen
Ansicht
Themen-Optionen

Alle Ordner eines Verzeichnises in einer Listbox auflisten

Ein Thema von Dragon27 · begonnen am 3. Apr 2007 · letzter Beitrag vom 3. Apr 2007
Antwort Antwort
Dragon27

Registriert seit: 20. Nov 2003
Ort: Aßling
543 Beiträge
 
Delphi XE6 Enterprise
 
#1

Alle Ordner eines Verzeichnises in einer Listbox auflisten

  Alt 3. Apr 2007, 09:26
Hallo,

ich möchte einfach in einer Listbox alle Ordner die im Verzeichnis C:/xyz/bbb stehen auflisten.....

Habe leider nur etwas ähnliches mit dem Treeview gefunden: Hier

Habt Ihr da eine Idee? Danke Für die Hilfe!

Gruß

Andy
Delphi is ......... DELPHI!!
  Mit Zitat antworten Zitat
stifflersmom

Registriert seit: 8. Dez 2005
Ort: 24994 Holt
374 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: Alle Ordner eines Verzeichnises in einer Listbox auflist

  Alt 3. Apr 2007, 09:32
Schau mal in der OH nach FindFirst, Findnext,
da findest Du schon alles was Du brauchst.

Moin
  Mit Zitat antworten Zitat
Dragon27

Registriert seit: 20. Nov 2003
Ort: Aßling
543 Beiträge
 
Delphi XE6 Enterprise
 
#3

Re: Alle Ordner eines Verzeichnises in einer Listbox auflist

  Alt 3. Apr 2007, 09:47
Hallo,

danke für deine Antwort. Also ich habe schon was gefunden, aber das listet ja nur Dateien auf

hier

Wie mache ich dann das ganze mit Ordnern?


Danke!
Delphi is ......... DELPHI!!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Alle Ordner eines Verzeichnises in einer Listbox auflist

  Alt 3. Apr 2007, 09:50
...if LSearchRec.Attr and faDirectory = 1 then ...
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.028 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Alle Ordner eines Verzeichnises in einer Listbox auflist

  Alt 3. Apr 2007, 09:58
Hallo,

ich habe mir vor kurzen eine kleine Komponente erstellt, mit welcher man genau das hinbekommen sollte Leider habe ich sie (noch) nicht kommentiert, vielleicht wirst Du ja aus dem Source schlau...

Schnellanleitung der Grundfunktion:

1.) Komponente installieren und auf Form platzieren
2.) Einstellungen im OI vornehmen (Für "nur" Verzeichniss sollte es folgendermaßen aussehen:
faAnyFile = true, faDirsOnly = true.
3.) Untervereichnisse einschliessen? -> im OI aktivieren

Aufruf:

Listbox1.Items := AdvFileSearch1.SearchToList; Ist evtl. mit Kanonen auf Spatzen geschossen, aber Du kannst Dir ja mal die Kernroutine anschauen und entsprechen anpassen.

Vielleicht hilft es Dir ja weiter...

SCRaT
Angehängte Dateien
Dateityp: pas advfilesearch_121.pas (13,1 KB, 26x aufgerufen)
Michael Kübler
  Mit Zitat antworten Zitat
Dragon27

Registriert seit: 20. Nov 2003
Ort: Aßling
543 Beiträge
 
Delphi XE6 Enterprise
 
#6

Re: Alle Ordner eines Verzeichnises in einer Listbox auflist

  Alt 3. Apr 2007, 10:47
Hallo,

also ich habs jetzt mal so probiert:

Delphi-Quellcode:

function ListFiles(Box : TListbox) : Boolean;
var
LStrList: TStringlist;
LPfad: String;
LSearchRec: TSearchRec;
begin
LPfad := 'C:/';
Box.Items.Clear;
LStrList := TStringlist.Create;
if FindFirst(LPfad + '*.*', faAnyFile, LSearchRec) = 0 then
  begin
   repeat
    if LSearchRec.Attr and faDirectory = 1 then
     begin
      Box.Items.Add(LSearchRec.Name);
     end;
   until FindNext(LSearchRec) <> 0;
   FindClose(LSearchRec);
  end;
LStrList.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ListFiles(Listbox1);
end;
Aber leider funktioniert das nicht

Danke für Eure Hilfe!
Delphi is ......... DELPHI!!
  Mit Zitat antworten Zitat
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Alle Ordner eines Verzeichnises in einer Listbox auflist

  Alt 3. Apr 2007, 10:52
Hallo!

ich habe diesen Code-Schnipsel gefunden:


Delphi-Quellcode:
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;

Es rechnet nebenbei noch die Größe aller eingelesenen
Verzeichnisse ein; kannst du ja nach Deinen Wünschen anpassen...

Gruß
Pfoto
Jürgen Höfs
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.028 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Alle Ordner eines Verzeichnises in einer Listbox auflist

  Alt 3. Apr 2007, 11:36
Zitat von Dragon27:
Hallo,

also ich habs jetzt mal so probiert:

[...]

Aber leider funktioniert das nicht

Danke für Eure Hilfe!
Ändere es mal so ab (an sonsten wie gesagt, schau Dir mal die Prozedur in meiner Komponente an!)


Delphi-Quellcode:
function ListFiles : TStringList; // Rückgabewert
var
LStrList: TStringlist;
LPfad: String;
LSearchRec: TSearchRec;

begin
LPfad := 'C:\'; // NICHT "C:/", weiß nicht, ob es sonst klappen würde
LStrList := TStringlist.Create;

if FindFirst(LPfad + '*.*', faAnyFile, LSearchRec) = 0 then
  begin
   repeat
    if (LSearchRec.Attr and faDirectory) = 1 then // Klammern gesetzt
     begin
      LStrList.Add(LSearchREc.Name);
     end;
   until FindNext(LSearchRec) <> 0;
   FindClose(LSearchRec);
  end;

Result := LStrList; // Ergebnis als StringList zurückgeben
LStrList.Free;
end;
Aufruf:
Listbox1.Items := ListFiles; Ob jetzt Deine eigentliche Suchfunktion korrekt programmiert ist, habe ich gerade leider keine Zeit zu testen. Rekursives Suchen dürfte so aber auf jeden Fall (falls nötig) nicht möglich sein. Evtl. könntest Du noch einen Parameter "function listfiles(dir : string) : TStringList" einbauen, damit man der Funktion noch das Verzeichnis übergeben kann, welches man auflisten möchte...

Ich hatte mal das ein komisches Verhalten, dass Verzeichniss nur gefunden wurden, wenn man statt "*.*" nur "*" eingegeben hat. Hat sich dann allerdings beim weiteren Programmieren in Luft aufgelöst!?! Evl. auch einen Versuch wert.

.. und weil das Editieren soo viel Spass macht:

Achte darauf, dass der Pfad, wenn nicht grad "c:\" immer mit einem "\" abgeschlossen wird. Also z.B. "c:\test\" und NICHT "c:\test", sonst pass ja der Ausdruck "LPfad + '*.*'" nicht mehr...

Viel Glück

SCRaT
Michael Kübler
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:47 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