Verzeichnisinhalt in ListBox anzeigen?

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Patrix2911
Beiträge: 32
Registriert: So 30. Jul 2017, 13:53

Verzeichnisinhalt in ListBox anzeigen?

Beitrag von Patrix2911 »

Halli hallo,

ich suche nach einer Möglichkeit in Lazarus den Verzeichnisinhalt in einer Listbox anzeigen zu lassen, ich habe dazu auch schon folgendes gefunden:

Code: Alles auswählen

 
procedure TForm1.GetAllFiles(Path, ExtMask: String; List: TStrings;
  SubFolder: Boolean);
var
  Attrib, i: Integer;
  Search: TRawbyteSearchRec;
begin
  Attrib := faArchive + faReadOnly + faHidden;
 
  if Path[Length(Path)] <> '\' then Path := Path + '\';
 
  with TStringList.Create do
  try
    CommaText := ExtMask;
 
    for i := 0 to Count - 1 do
    if FindFirst(Path + '
*.' + Strings[i], Attrib, Search) = 0 then
      repeat
        List.Add(AnsiUpperCase(Path + Search.Name));
      until FindNext(Search) <> 0;
 
    FindClose(Search);
  finally Free end;
 
  if SubFolder then
  begin
    if FindFirst(Path + '
*.*', faDirectory, Search) = 0 then
    begin
      repeat
        if ((Search.Attr and faDirectory) = faDirectory) and
          (Search.Name[1] <> '
.') then
          GetAllFiles(Path + Search.Name, ExtMask, List, SubFolder);
      until FindNext(Search) <> 0;
 
      FindClose(Search);
    end;
  end;
end;


Das will wohl aber nicht so ganz wie ich es möchte, der Coompiler spring zu "FindeClose" und meldet "form1_.pas(98,21) Error: Incompatible type for arg no. 1: Got "TRawbyteSearchRec", expected "QWord""

Nun weiss ich leider nicht wirklich weiter.... vielleicht kann mir ja hier jemand helfen.

Besste Grüße & Danke vorab - Patrick.

wp_xyz
Beiträge: 4864
Registriert: Fr 8. Apr 2011, 09:01

Re: Verzeichnisinhalt in ListBox anzeigen?

Beitrag von wp_xyz »

TRawByteSearchRec habe ich noch nie gesehen. Nehme ich TSearchRec dann läuft es.

Du kannst das ganze übrigens vereinfachen, in dem du die Prozedur FindAllFiles aus der Unit FileUtil nimmst:

Code: Alles auswählen

uses
  FileUtil;
 
procedure TForm1.GetAllFiles(Path, ExtMask: String; List: TStrings;
  SubFolder: Boolean);
var
  i: Integer;
begin
  with TStringList.Create do
  try
    CommaText := ExtMask;
    for i := 0 to Count - 1 do
      FindAllFiles(List, Path, '*.' + Strings[i], SubFolder);
  finally
    Free
  end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  L: TStringList;
begin
  L := TStringList.Create;
  try
    GetAllFiles('.', 'pas,lfm,o', L, true);
    Listbox1.Items.Assign(L);
  finally
    L.Free;
  end;
end

Benutzeravatar
theo
Beiträge: 10462
Registriert: Mo 11. Sep 2006, 19:01

Re: Verzeichnisinhalt in ListBox anzeigen?

Beitrag von theo »

Es gibt übrigens auch TShellListView, welche genau dafür gedacht ist.

Patrix2911
Beiträge: 32
Registriert: So 30. Jul 2017, 13:53

Re: Verzeichnisinhalt in ListBox anzeigen?

Beitrag von Patrix2911 »

Das funktioniert bestens! VIELEN LIEBEN DANK!!!

@THEO: Genau nach so etwas hatte ich gesucht, da ich weiss das es sowas unter Delphi gibt. Bei Lazarus hab ich es jedoch nicht gefunden, ist das bei der Standard-Installation vllt. nicht enthalten?

Benutzeravatar
theo
Beiträge: 10462
Registriert: Mo 11. Sep 2006, 19:01

Re: Verzeichnisinhalt in ListBox anzeigen?

Beitrag von theo »

Patrix2911 hat geschrieben:@THEO: Genau nach so etwas hatte ich gesucht, da ich weiss das es sowas unter Delphi gibt. Bei Lazarus hab ich es jedoch nicht gefunden, ist das bei der Standard-Installation vllt. nicht enthalten?

Doch im Tab "Misc".
Du kannst auch mit der rechten Maustaste auf den Komponentenbereich klicken, dann "Alle anzeigen" und im Suchfeld "tshe" eingeben,
Dann müsstest du es auswählen können.
Die Eigenschaft "Root" setzt das Verzeichnis.

P.S. TFileListBox gibt es dort auch noch.

Patrix2911
Beiträge: 32
Registriert: So 30. Jul 2017, 13:53

Re: Verzeichnisinhalt in ListBox anzeigen?

Beitrag von Patrix2911 »

Sehr cool. Danke für den Tipp, habs gefunden. Auch das mit der Suche kannte ich noch nicht. Ich wünsche noch besinnliche Feiertage. :)

Antworten