![]() |
|
|
#1
|
|||
|
|||
![]() Помогите ребят! Есть большое кол-во каталогов расположенных в сети. Программа производит поиск файлов во всех вложенных в них каталогах и к некоторым каталогам нет доступа(нету прав и т.п.). Естественно при попытки войти в этот каталог программа вылетает с ошибкой. Как грамотно проверить каталог на доступность? Интернет помог только способом попробовать создать файл в каталоге и отловить ошибку. Не хотелось бы пользоваться данным способом. Заранее спасибо за помощь!
|
#2
|
||||
|
||||
![]() Цитата:
Используй для поиска FindFirst, FindNext, FindClose. |
#3
|
|||
|
|||
![]() Цитата:
Я этим и пользуюсь. Вот код. Код:
procedure FindFile(Dir:String); Var SR:TSearchRec; FindRes:Integer; begin FindRes:=FindFirst(Dir,faAnyFile,SR); While FindRes=0 do begin if ((SR.Attr and faDirectory)=faDirectory) then begin FindFile(Dir+SR.Name+''); FindRes:=FindNext(SR); Continue; end; FindRes:=FindNext(SR); end; FindClose(SR); end; При поиске к примеру на локальном диске проблем не возникает. Последний раз редактировалось listerine, 13.01.2014 в 15:33. |
#4
|
||||
|
||||
![]() Цитата:
Какую ошибку выдаёт у тебя этот код? p.s. На этом форуме запрещено исходный код выкладывать в виде обычного текста, можно только обрамляя его тегом [code] - исправь - иначе модераторы тебя заблокируют. |
#5
|
|||
|
|||
![]() Цитата:
Все что вы сказали все это есть. Прошу прощения, но я это вырезал не предав этому значения, так как думаю проблема в другом. Ошибка "Отказано в доступе". Вот код. Код:
procedure FindFile(Dir:String); Var SR:TSearchRec; FindRes:Integer; begin Dir := IncludeTrailingPathDelimiter(Dir); FindRes:=FindFirst(Dir+'*.*',faAnyFile,SR); While FindRes=0 do begin if ((SR.Attr and faDirectory)=faDirectory) and ((SR.Name='.')or(SR.Name='..')) then begin FindRes:=FindNext(SR); Continue; end; if ((SR.Attr and faDirectory)=faDirectory) then begin FindFile(Dir+SR.Name+''); FindRes:=FindNext(SR); Continue; end; FindRes:=FindNext(SR); end; FindClose(SR); end; |
#6
|
|||
|
|||
![]() |