Sign in Join
Wiki copytemporary

FindAllFiles/pl

English · Español · Français · Polski · Suomi · Русский

Unit: Lazarus fileutil

Aby włączyć FileUtil w swoim projekcie, dodaj LazUtils do wymaganych pakietów. Wykonaj następujące kroki:

Zobacz także:

pascal
procedure FindAllFiles(AList: TStrings; const SearchPath: String;
  SearchMask: String = ''; SearchSubDirs: Boolean = True; DirAttr: Word = faDirectory); 

function FindAllFiles(const SearchPath: String; SearchMask: String = '';
  SearchSubDirs: Boolean = True): TStringList;

FindAllFiles szuka plików pasujących do SearchMask (maski wyszukiwania) w katalogu SearchPath i w jego podkatalogach jeśli SearchSubDirs ma wartość True, a następnie wypełnia stringlist wynikowymi nazwami plików.

Maska może być pojedynczą maską, tak jak w przypadku funkcji FindFirst/FindNext, lub może składać się z listy masek oddzielonych średnikiem (;). Spacje w masce są traktowane jako literały.

Parametr DirAttr jest atrybutem pliku typu Integer (dokładniej typu Word): jeśli element systemu plików ma ten atrybut, wówczas jest traktowany jako katalog. Może to być faDirectory, faSymLink, (faDirectory+faSymLink) a także inne wartości bitów.

Istnieją dwie przeciążone wersje tej procedury. Pierwsza z nich to procedura i zakłada, że zwrotna lista łańcuchów (AList: TStrings) została już utworzona. Druga to funkcja, która wewnętrznie tworzy listę łańcuchów i zwraca ją jako wynik funkcji. W obu przypadkach lista łańcuchów musi zostać zniszczona przez procedurę wywołującą.

Przykład

pascal
uses 
  ..., FileUtil, ...
var
  PascalFiles: TStringList;
begin
  PascalFiles := TStringList.Create;
  try
    FindAllFiles(PascalFiles, LazarusDirectory, '*.pas;*.pp;*.p;*.inc', true); //znajdź np. wszystkie pliki źródłowe pascala
    ShowMessage(Format('Znaleziono %d plików źródłowych Pascala', [PascalFiles.Count]));
  finally
    PascalFiles.Free;
  end;

// lub

begin
  //Nie ma potrzeby tworzenia listy ciągów; funkcja robi to za Ciebie
  PascalFiles := FindAllFiles(LazarusDirectory, '*.pas;*.pp;*.p;*.inc', true); //znajdź np. wszystkie pliki źródłowe pascala
  try
    ShowMessage(Format('Znaleziono %d plików źródłowych Pascala', [PascalFiles.Count]));
  finally
    PascalFiles.Free;
  end;

Warning: WAŻNA UWAGA: Funkcja „FindAllFiles” tworzy wewnętrznie listę ciągów. Na pierwszy rzut oka może się to wydawać bardzo wygodne, ale bardzo łatwo jest tworzyć wycieki pamięci w ten sposób:

pascal
// NIGDY TEGO NIE RÓB !!!! - W tym kodzie nie ma sposobu, aby zniszczyć listę ciągów utworzoną przez FindAllFiles.
Listbox1.Items.Assign(FindAllFiles(LazarusDirectory, '*.pas;*.pp;*.p;*.inc', true);

Note: Jeśli chcesz używać tej funkcji w programach wiersza poleceń, dodaj wymagany moduł LCLBase, który nie będzie pobierać całego LCL


From the Free Pascal wiki, page "FindAllFiles/pl", as it stood on 2022-02-08 after a change by Slawek, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Revision 1, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.