Задача состоит в том чтобы считать список имен файлов нескольких разных типов в ListBox.
В интернете нашел такой код:
Код:
procedure ScanDir(StartDir: string; Mask:string; List:TStrings);
var SearchRec : TSearchRec;
begin if Mask = '' then Mask := '*.*';
if StartDir[Length(StartDir)] <> '\' then StartDir := StartDir + '\';
if FindFirst(StartDir+Mask, faAnyFile, SearchRec) = 0 then
begin
repeat
Application.ProcessMessages;
if (SearchRec.Attr and faDirectory) <> faDirectory then
List.Add(StartDir + SearchRec.Name)
else if (SearchRec.Name <> '..') and (SearchRec.Name <> '.') then
begin
List.Add(StartDir + SearchRec.Name + '\');
ScanDir(StartDir + SearchRec.Name + '\',Mask,List);
end;
until FindNext(SearchRec) <> 0;
FindClose(SearchRec);
end;
end;
Используется так:
Код:
ScanDir(<путь>,'',ListBox1.Items);
Но эта процедура вместе с адресами файлов заносит в ListBox еще и адреса папок, что мне не нужно. К тому же она позволяет использовать только одну маску.
Как сделать чтобы в ListBox заносились только адреса файлов, пропуская папки? И как изменить код чтобы использовать несколько масок?
Я новичок в программировании, поэтому хотелось бы рассчитывать на подробный ответ, если это возможно.