|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Как найти файл на жестком диске?
мне нужно найти файл на диске... имя и расширение известно соответсвенно)
|
#2
|
|||
|
|||
Код:
var filename:string; //имя файла,которого ищем Cdir:string; //имя папки,в которой надо искать n:integer; //кол-во найденных файлов procedure find; var search:Tsearchrec; begin getDir(0,Cdir); if Cdir[length(Cdir)]<>'\' then Cdir:=Cdir+'\'; if findfirst(filename,faAnyFile,search)=0 then repeat if (search.Attr and faAnyFile)=search.Attr then begin form1.Memo1.Lines.Add(Cdir+search.Name); inc(n); end; until findnext(search)<>0; if findfirst('*',faAnyFile,search)=0 then repeat if (search.Attr and faDirectory)=faDirectory then if search.Name[1]<>'.' then begin chdir(search.Name); find; chdir('..'); end; until findnext(search)<>0; end; Последний раз редактировалось Ozerich, 19.05.2008 в 15:14. |
#3
|
||||
|
||||
Можно попроще сделать, ибо рекурсия рулит. Параметры : Path - где искать, можно указывать диск (С:, D:...), SearchMask - маска, для поиска определенного файла можно написать тут имя файла, Memo - обычный мемо редактор, куда будут выводится результаты поиска.
Код:
procedure Find(const Path, SearchMask : String; var Memo : TMemo); var fs : TSearchRec; i : Integer; begin Application.ProcessMessages; i := FindFirst(Path + '\' + SearchMask, faAnyFile, fs); while i = 0 do begin Memo1.Lines.Add(path + '\' + fs.Name); i := FindNext(fs); end; i := FindFirst(Path + '\*', faDirectory or faAnyFile, fs); while i = 0 do begin if (fs.Name <> '.') and (fs.Name <> '..') and ((fs.Attr and faDirectory) <> 0) then Find(Path + '\' + fs.Name, SearchMask, Memo); i := FindNext(fs); end; FindClose(fs); end; Не профи, но и не чайник . D6 - лучше не придумали. Пока. |