Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Ordnernamen in Listbox laden (https://www.delphipraxis.net/127457-ordnernamen-listbox-laden.html)

cyanroot 13. Jan 2009 17:52


Ordnernamen in Listbox laden
 
Hallo,

wie kann ich alle Ordner die sich im Programmordener befinden auslesen und ihre Namen in einer Listbox anzeigen?

Danke im Vorraus

DeddyH 13. Jan 2009 17:56

Re: Ordnernamen in Listbox laden
 
Mit FindFirst() und FindNext() durch das Verzeichnis iterieren, auf das faDirectory-Attribut prüfen und Namen eintragen.

toms 13. Jan 2009 18:07

Re: Ordnernamen in Listbox laden
 
Hallo

Das geht z.B mit der LB_DIR Nachricht.
Flexibler bist du jedoch mit Delphi-Referenz durchsuchenFindFirst, Delphi-Referenz durchsuchenFindNext etc.

Delphi-Quellcode:
procedure ListDirectories(LB: TListBox; Path: PChar);
var
  i: Integer;
begin
  with LB do
  begin
    Perform(LB_DIR, DDL_DIRECTORY, Integer(Path));
    for i := Pred(Items.Count) downto 0 do
      if Items[i][1] <> '[' then Items.Delete(i);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ListDirectories(ListBox1,'C:\*.*');
end;

cyanroot 13. Jan 2009 20:17

Re: Ordnernamen in Listbox laden
 
Danke für den Code, es geht.

Leider werden aber die Namen mit [ ] umrandet und es befindet sich auch ein [...] in der ListBox. Kann man das irgendwie ändern?

Danke

toms 13. Jan 2009 20:22

Re: Ordnernamen in Listbox laden
 
Edit: i sollte vom Typ Integer sein und nicht Word. Probier's nochmals.

cyanroot 13. Jan 2009 20:26

Re: Ordnernamen in Listbox laden
 
Die Namen werden immer noch mit [ ] umrandet und es befindet sich auch ein [..] in der ListBox.
Weisst du was ich noch tun könnte?

TBx 13. Jan 2009 20:29

Re: Ordnernamen in Listbox laden
 
In dem Code findest Du eine For-Schleife.
In dieser wird jeder Eintrag gelöscht, der nicht mit '[' beginnt.
In dieser Schleife kannst Du nun einbauen, dass die Zeichen '[' und ']' ausgeschnitten werden. Dein Freunde hierfür sind Delphi-Referenz durchsuchencopy und Delphi-Referenz durchsuchenpos.
Auch kannst Du den Eintrag [..] darin ebenfalls löschen.

Gruß

cyanroot 13. Jan 2009 20:34

Re: Ordnernamen in Listbox laden
 
Es tut mir leid, ich habe nie auf dieser Ebene mit Delphi gearbeitet. Könntest Du mir nicht einen kleinen Beispielcode schreiben?

Wäre dir sehr dankbar.

quendolineDD 13. Jan 2009 21:31

Re: Ordnernamen in Listbox laden
 
Oder halt so
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ListBox1.Items.Assign(DirectoryListing('C:/*'));
end;

function TForm1.DirectoryListing(const PATH: string): TStrings;
var
  S : TSearchRec;
begin
  Result := TStringlist.Create;
  if FindFirst(PATH, faDirectory, S) = 0 then
  begin
    repeat
      if (S.Attr and faDirectory) = S.Attr then
        Result.Add(S.Name);
    until FindNext(S) <> 0;
    FindClose(S);
  end;
  if Result.Count = 0 then Result.Add(format('%s enthält keine Ordner', [path]));
end;
Am besten du schaust dir mal die Delphihilfe an. Einfach Copy eingeben und dann schauen was es dir anzeigt. Da siehst du auch direkt, welche Parameter die Funktion erwartet etc.

Lg

cyanroot 13. Jan 2009 21:48

Re: Ordnernamen in Listbox laden
 
Danke, aber da werden jetzt noch zuerst . und .. angezeigt. Weisst Du wie man die wegmacht?


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:57 Uhr.
Seite 1 von 3  1 23      

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