Здраствуйте господа античатовци. Я пытаюсь изучить делфи, решил написать программу прикладного характера для семейных нужд, назовём это так. по ходу программы требуется написать процедуру, которая имеет 2 пораметра: адрес папки в компьютере(string) и список имён файлов в ней находящихся(TstringList), последний параметр выходной . подскажите как это риализовать, пожалуйста.
Code: procedure ScanDir (Path:string;SearchMask:TStrings;ScanSub:boolean); var SearchRec:TSearchrec; a,i:integer; begin if ScanSub then begin FindFirst(path+'\*.*',faDirectory,SearchRec);{. found} FindNext(SearchRec); {.. found} a:=FindNext(SearchRec); while a=0 do begin if (SearchRec.Attr and faDirectory)>0 then ScanDir(Path+'\'+SearchRec.Name,SearchMask,ScanSub); a:=FindNext(SearchRec); end;{while} FindClose(SearchRec); end;{if} for i:=0 to SearchMask.Count-1 do begin a:=FindFirst(Path+'\'+SearchMask[i],faAnyFile,SearchRec); while a=0 do begin {operation on file} a:=FindNext(SearchRec); end;{while} FindClose(SearchRec); end;{for} end; {ScanDir} Path: string - путь до сканируемой папки; SearchMask: TStrings - маска для поиска (*.* - отображает все); ScanSub: boolean - указывает на необходимость сканирования подпапок; {operation on file} - вот тут делаешь с найденным файлами все что хочешь. можно заносить в список.
http://www.delphisources.ru/pages/faq/faq_delphi_basics/TSearchRec.php.html http://www.delphisources.ru/pages/faq/faq_delphi_basics/FindFirst.php.html http://www.delphisources.ru/pages/faq/faq_delphi_basics/FindNext.php.html http://www.delphisources.ru/pages/faq/faq_delphi_basics/FileSearch.php.html
Code: 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; Пример использования: Code: listbox1.items.clear; scandir('c:','',listbox1.items); (с) articles.org.ru
Спасибо, вроде понимаю код. только вот Sams, для чего нужен вророй параметр в твоей процедуре малец не понял.
а если я поставлю '*.mp3', то будут сканироватся тока mp3? я как то даже на задумывался об этом, может пригодится.Спасибо ещё раз.