Difference between revisions of "FindAllFiles/ru"
m (Fixed syntax highlighting) |
|||
Line 9: | Line 9: | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
procedure FindAllFiles(AList: TStrings; const SearchPath: String; | procedure FindAllFiles(AList: TStrings; const SearchPath: String; | ||
SearchMask: String = ''; SearchSubDirs: Boolean = True; DirAttr: Word = faDirectory); | SearchMask: String = ''; SearchSubDirs: Boolean = True; DirAttr: Word = faDirectory); | ||
Line 26: | Line 26: | ||
'''Пример:''' | '''Пример:''' | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
uses | uses | ||
..., FileUtil, ... | ..., FileUtil, ... | ||
Line 55: | Line 55: | ||
Функция ''FindAllFiles'' создает внутренний список строк. На первый взгляд это может показаться очень удобным, но создать '''утечки памяти''' очень просто: | Функция ''FindAllFiles'' создает внутренний список строк. На первый взгляд это может показаться очень удобным, но создать '''утечки памяти''' очень просто: | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
// НИКОГДА ТАК НЕ ДЕЛАЙТЕ !!!! - Нет способа уничтожить список строк, созданный [функцией] FindAllFiles. | // НИКОГДА ТАК НЕ ДЕЛАЙТЕ !!!! - Нет способа уничтожить список строк, созданный [функцией] FindAllFiles. | ||
Listbox1.Items.Assign(FindAllFiles(LazarusDirectory, '*.pas;*.pp;*.p;*.inc', true); | Listbox1.Items.Assign(FindAllFiles(LazarusDirectory, '*.pas;*.pp;*.p;*.inc', true); |
Revision as of 00:59, 16 February 2020
│
English (en) │
español (es) │
suomi (fi) │
français (fr) │
polski (pl) │
русский (ru) │
См.также:
- http://lazarus-ccr.sourceforge.net/docs/lcl/fileutil/findallfiles.html
- http://lazarus-ccr.sourceforge.net/docs/lcl/fileutil/tfilesearcher.html
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 ищет файлы, соответствующие маске поиска, в каталоге SearchPath и, если указано, в его вложенных папках, и заполняет stringlist результирующими именами файлов.
Маска может быть единственной маской, которую вы можете использовать с функциями FindFirst/FindNext, или она может состоять из списка масок, разделенных точкой с запятой(;).
Пробелы в маске рассматриваются как литералы.
Есть две перегруженные версии этой процедуры. Первая из них представляет собой процедуру и предполагает, что получающий список строк уже создан. Вторая - это функция, которая создает список строк внутри себя и возвращает его как результат функции. В обоих случаях список строк должен быть уничтожен вызывающей процедурой.
Пример:
uses
..., FileUtil, ...
var
PascalFiles: TStringList;
begin
PascalFiles := TStringList.Create;
try
FindAllFiles(PascalFiles, LazarusDirectory, '*.pas;*.pp;*.p;*.inc', true); //находим, например, все исходные файлы паскаля
ShowMessage(Format('Found %d Pascal source files', [PascalFiles.Count]));
finally
PascalFiles.Free;
end;
//или
begin
//Нет необходимости создавать список строк; функция делает это для вас
PascalFiles := FindAllFiles(LazarusDirectory, '*.pas;*.pp;*.p;*.inc', true); //находим, например, все исходные файлы паскаля
try
ShowMessage(Format('Found %d Pascal source files', [PascalFiles.Count]));
finally
PascalFiles.Free;
end;
ВАЖНОЕ ЗАМЕЧАНИЕ: Функция FindAllFiles создает внутренний список строк. На первый взгляд это может показаться очень удобным, но создать утечки памяти очень просто:
// НИКОГДА ТАК НЕ ДЕЛАЙТЕ !!!! - Нет способа уничтожить список строк, созданный [функцией] FindAllFiles.
Listbox1.Items.Assign(FindAllFiles(LazarusDirectory, '*.pas;*.pp;*.p;*.inc', true);