Delphi-PRAXiS
Seite 2 von 3     12 3      

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)

taaktaak 13. Jan 2009 21:53

Re: Ordnernamen in Listbox laden
 
Delphi-Quellcode:
if (S.Name<>'.') and (S.Name<>'..') then Result.Add(S.Name)
// PS: dass die Funktion eine Stringliste erzeugt, finde ich nicht besonders glücklich, mach' doch 'ne Prozedur draus und übergebe dieser die Listbox zum direkten Befüllen

cyanroot 13. Jan 2009 22:01

Re: Ordnernamen in Listbox laden
 
Und das geht wie? ;).

taaktaak 13. Jan 2009 22:07

Re: Ordnernamen in Listbox laden
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  DirectoryListing('C:/*',Listbox1.Items);
end;

procedure TForm1.DirectoryListing(const PATH:String;SL:TStrings);
var
  S : TSearchRec;
begin

  if FindFirst(PATH, faDirectory, S) = 0 then
  begin
    repeat
      if (S.Attr and faDirectory) = S.Attr then
       if (S.Name<>'.') and (S.Name<>'..') then SL.Add(S.Name)
    until FindNext(S) <> 0;
    FindClose(S);
  end;
  if Result.Count = 0 then SL.Add(format('%s enthält keine Ordner', [path]));
end;
// nur aus dem Kopf getippt

toms 13. Jan 2009 22:07

Re: Ordnernamen in Listbox laden
 
Zitat:

Zitat von cyanroot
Und das geht wie? ;).

Delphi-Quellcode:
procedure ListDirectory(Strings: TStrings; const Path: string);
var
  S: TSearchRec;
begin
  if FindFirst(Path, faDirectory, S) = 0 then
  begin
    repeat
      if ((S.Attr and faDirectory) = faDirectory) and
        (s.Name <> '.') and (s.Name <> '..') then
        Strings.Add(S.Name);
    until FindNext(S) <> 0;
    FindClose(S);
  end;
end;

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

taaktaak 13. Jan 2009 22:08

Re: Ordnernamen in Listbox laden
 
hihihi, schneller :lol:

quendolineDD 13. Jan 2009 22:09

Re: Ordnernamen in Listbox laden
 
Ja, weil ich die Stringliste dann nicht mehr freigeben kann. Aber Delphi dürfte den Speicher dann trotzdem wieder freigeben, was?

Ansonsten mach doch einfach so:

Delphi-Quellcode:
function TForm1.DirectoryListing(const PATH: string;
  var L: TListBox): Integer;
var
  S : TSearchRec;
begin
  Result := 0;
  if FindFirst(PATH, faDirectory, S) = 0 then
  begin
    repeat
      if ((S.Attr and faDirectory) = S.Attr) and (S.Name <> '.') and (S.Name <> '..') then
      begin
        L.Items.Add(S.Name);
        INC(Result);
      end;
    until FindNext(S) <> 0;
    FindClose(S);
  end;
  if Result = 0 then L.Items.Add(format('%s enthält keine Ordner', [PATH]));
end;
Ich liebe Funktionen ;)

taaktaak 13. Jan 2009 22:11

Re: Ordnernamen in Listbox laden
 
Ja, geht auch, aber TStrings sind universeller
:wink:

jfheins 13. Jan 2009 22:13

Re: Ordnernamen in Listbox laden
 
Zitat:

Zitat von taaktaak
hihihi, schneller :lol:

Aber falsch :P
Zitat:

Zitat von taaktaak
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  DirectoryListing('C:/*',Listbox1.Items);
end;

procedure TForm1.DirectoryListing(const PATH:String;SL:TStrings);
var
  S : TSearchRec;
begin

  if FindFirst(PATH, faDirectory, S) = 0 then
  begin
    repeat
      if (S.Attr and faDirectory) = S.Attr then // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
       if (S.Name<>'.') and (S.Name&lt;&gt;'..') then SL.Add(S.Name)
    until FindNext(S) &lt;&gt; 0;
    FindClose(S);
  end;
  if Result.Count = 0 then SL.Add(format('%s enthält keine Ordner', [path]));
end;
// nur aus dem Kopf getippt

Funkt nur, wenn wirklich nur das Directory-Flag gesetzt ist - es darf also nicht komprimiert/veschlüsselt/schreibgeschützt/etc. sein ;)

taaktaak 13. Jan 2009 22:18

Re: Ordnernamen in Listbox laden
 
Schon richtig!
Das ist nur übernommen, nicht von mir.
Hätte korrigiert werden müssen!
Sorry!
:cry:

cyanroot 13. Jan 2009 22:21

Re: Ordnernamen in Listbox laden
 
Danke euch ;). Und warum ist das besser? ;).


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

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