Difference between revisions of "FindAllFiles/ru"
(Created page with "{{FindAllFiles}} Unit: Lazarus fileutil См.также: * http://lazarus-ccr.sourceforge.net/docs/lcl/fileutil/findallfiles.html * http://lazarus-ccr.sourceforge.n...") |
|||
Line 16: | Line 16: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | '''FindAllFiles''' | + | '''FindAllFiles''' ищет файлы, соответствующие маске поиска, в каталоге SearchPath и, если указано, в его вложенных папках, и заполняет [[TStrings|stringlist]] результирующими именами файлов. |
− | + | Маска может быть единственной маской, которую вы можете использовать с функциями FindFirst/FindNext, или она может состоять из списка масок, разделенных [[Semicolon|точкой с запятой(;)]].<br> | |
− | + | Пробелы в маске рассматриваются как литералы. | |
− | |||
− | + | Есть две перегруженные версии этой процедуры. Первая из них представляет собой '''[[Procedure/ru|процедуру]]''' и предполагает, что получающий список строк уже создан. | |
− | + | Вторая - это '''[[Function/ru|функция]]''', которая создает список строк внутри себя и возвращает его как результат функции. В обоих случаях список строк должен быть уничтожен вызывающей процедурой. | |
− | ''' | + | '''Пример:''' |
<syntaxhighlight> | <syntaxhighlight> | ||
uses | uses |
Revision as of 18:07, 23 February 2019
│
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); //find e.g. all pascal sourcefiles
ShowMessage(Format('Found %d Pascal source files', [PascalFiles.Count]));
finally
PascalFiles.Free;
end;
// or
begin
//No need to create the stringlist; the function does that for you
PascalFiles := FindAllFiles(LazarusDirectory, '*.pas;*.pp;*.p;*.inc', true); //find e.g. all pascal sourcefiles
try
ShowMessage(Format('Found %d Pascal source files', [PascalFiles.Count]));
finally
PascalFiles.Free;
end;
IMPORTANT NOTE: The function "FindAllFiles" creates the stringlist internally. This may look very convenient at first sight, but it is very easy to create memory leaks that way:
// DON'T EVER DO THIS !!!! - There is no way to destroy the stringlist created by FindAllFiles.
Listbox1.Items.Assign(FindAllFiles(LazarusDirectory, '*.pas;*.pp;*.p;*.inc', true);