Verzeichnisinhalt in ListBox anzeigen?

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.

Verzeichnisinhalt in ListBox anzeigen?

Beitragvon Patrix2911 » 21. Dez 2017, 21:27 Verzeichnisinhalt in ListBox anzeigen?

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.
Patrix2911
 
Beiträge: 31
Registriert: 30. Jul 2017, 12:53

Beitragvon wp_xyz » 21. Dez 2017, 21:55 Re: Verzeichnisinhalt in ListBox anzeigen?

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
wp_xyz
 
Beiträge: 2621
Registriert: 8. Apr 2011, 08:01

Beitragvon theo » 21. Dez 2017, 23:41 Re: Verzeichnisinhalt in ListBox anzeigen?

Es gibt übrigens auch TShellListView, welche genau dafür gedacht ist.
theo
 
Beiträge: 8054
Registriert: 11. Sep 2006, 18:01

Beitragvon Patrix2911 » 22. Dez 2017, 13:49 Re: Verzeichnisinhalt in ListBox anzeigen?

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?
Patrix2911
 
Beiträge: 31
Registriert: 30. Jul 2017, 12:53

Beitragvon theo » 22. Dez 2017, 14:32 Re: Verzeichnisinhalt in ListBox anzeigen?

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.
theo
 
Beiträge: 8054
Registriert: 11. Sep 2006, 18:01

Beitragvon Patrix2911 » 25. Dez 2017, 20:19 Re: Verzeichnisinhalt in ListBox anzeigen?

Sehr cool. Danke für den Tipp, habs gefunden. Auch das mit der Suche kannte ich noch nicht. Ich wünsche noch besinnliche Feiertage. :)
Patrix2911
 
Beiträge: 31
Registriert: 30. Jul 2017, 12:53

• Themenende •

Zurück zu Sonstiges



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

porpoises-institution
accuracy-worried