Sign in Join
Wiki copytemporary

FindAllFiles/pl: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: FindAllFiles/pl

OldNewLine
1+[[Unit]]: Lazarus [[fileutil]]
2+
3+Aby włączyć FileUtil w swoim projekcie, dodaj LazUtils do wymaganych pakietów. Wykonaj następujące kroki:
4+
5+- Przejdź do *Menu Lazarus IDE* \> *Projekt* \> *Inspektor projektu*
6+- W oknie dialogowym *Inspektor projektu* kliknij *Dodaj* \> *Nowy wymóg*
7+- W oknie dialogowym *Nowy wymóg* znajdź pakiet *LazUtils*, a następnie kliknij OK.
8+
9+Zobacz także:
10+
11+- <http://lazarus-ccr.sourceforge.net/docs/lcl/fileutil/findallfiles.html>
12+- <http://lazarus-ccr.sourceforge.net/docs/lcl/fileutil/tfilesearcher.html>
13+
14+``` pascal
15+procedure FindAllFiles(AList: TStrings; const SearchPath: String;
16+ SearchMask: String = ''; SearchSubDirs: Boolean = True; DirAttr: Word = faDirectory);
17+
18+function FindAllFiles(const SearchPath: String; SearchMask: String = '';
19+ SearchSubDirs: Boolean = True): TStringList;
20+```
21+
22+**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 [[TStrings|stringlist]] wynikowymi nazwami plików.
23+
24+Maska może być pojedynczą maską, tak jak w przypadku funkcji FindFirst/FindNext, lub może składać się z listy masek oddzielonych [[Semicolon|średnikiem (;)]]. Spacje w masce są traktowane jako literały.
25+
26+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.
27+
28+Istnieją dwie przeciążone wersje tej procedury. Pierwsza z nich to **[[Procedure|procedura]]** i zakłada, że zwrotna lista łańcuchów (AList: TStrings) została już utworzona. Druga to **[[Function|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ą.
29+
30+## Przykład
31+
32+``` pascal
33+uses
34+ ..., FileUtil, ...
35+var
36+ PascalFiles: TStringList;
37+begin
38+ PascalFiles := TStringList.Create;
39+ try
40+ FindAllFiles(PascalFiles, LazarusDirectory, '*.pas;*.pp;*.p;*.inc', true); //znajdź np. wszystkie pliki źródłowe pascala
41+ ShowMessage(Format('Znaleziono %d plików źródłowych Pascala', [PascalFiles.Count]));
42+ finally
43+ PascalFiles.Free;
44+ end;
45+
46+// lub
47+
48+begin
49+ //Nie ma potrzeby tworzenia listy ciągów; funkcja robi to za Ciebie
50+ PascalFiles := FindAllFiles(LazarusDirectory, '*.pas;*.pp;*.p;*.inc', true); //znajdź np. wszystkie pliki źródłowe pascala
51+ try
52+ ShowMessage(Format('Znaleziono %d plików źródłowych Pascala', [PascalFiles.Count]));
53+ finally
54+ PascalFiles.Free;
55+ end;
56+```
57+
58+> **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:
59+>
60+> ``` pascal
61+> // NIGDY TEGO NIE RÓB !!!! - W tym kodzie nie ma sposobu, aby zniszczyć listę ciągów utworzoną przez FindAllFiles.
62+> Listbox1.Items.Assign(FindAllFiles(LazarusDirectory, '*.pas;*.pp;*.p;*.inc', true);
63+> ```
64+
65+> **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
66+
67+---
68+*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](/wiki-contact).*

Back to history