![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
проверка папки [D7, Win95/98, WinME, NT4, Win2k, WinXP]
rosl © (2005-03-04 07:47:00)народ, подскажите
как сделать проверку каталога (например по нажатию кнопки)
если в папке есть файлы - выдать сообщение
Poirot (2005-03-05 09:37:00) [1]Fedia © (04.03.05 23:56) [8]
А зачем знать возраст:)) Чтоб не было соблазна подавить авторитетом на меня:) ГЫ:)))
Fedia (2005-03-04 23:56:00) [2]Poirot © (04.03.05 12:13) [7]
Да, твой вариант намного лучше, а со скрытыми папками я на самом деле промахнулся.
Удивило только, что not faDirectory срабатывает. Хотя ответ в реализации функции FindFirst :)
PS. Дата рождения: 20.03.2004. Учимся составлять анкеты :)
Poirot (2005-03-04 12:13:00) [3]Хм.. интересный вериант точку игнорировать, но я всё-таки предлагаю проще намного:
function FileInDirectory(dir: string): Boolean;
var
f: TSearchRec;
begin
Result := FindFirst(dir+'*.*', not faDirectory, f) = 0;
FindClose(f);
end;
Fedia (2005-03-04 11:14:00) [4]Poirot © (04.03.05 10:38) [5]
вариант с точкой в FindFirst(dir+'*.*', faAnyFile, f);
на счет скрытых папок, может, я и промахнулся. Завтра проверю.
Poirot (2005-03-04 10:38:00) [5]Fedia © (04.03.05 09:36) [3]
>>if (f.Name<>'..') and (f.Attr <> faDirectory) then
Учим матчасть - это не есть правильно - ошибка в двух местах ибо есть '.' и папка может иметь аттрибут например скрытый:)
Лече помоему сделатьатрибут для поиска в FindFirst not faDirectory - хотя мб сть и сомнения:) тогда впринципе и не нать никаких проверок и циклов
GLFox (2005-03-04 09:39:00) [6]Все просто: FindFirst, FindNext, FindClose. Смотришь FindNext-ом в нужной директории пока не появится что-нибудь кроме "." или "..".
Fedia (2005-03-04 09:36:00) [7]
function FileInDirectory(dir: string): Boolean;
var
f: TSearchRec;
begin
Result:=false;
FindFirst(dir+'*.*', faAnyFile, f);
while FindNext(f)=0 do
if (f.Name<>'..') and (f.Attr <> faDirectory) then
begin
Result:=true;
break;
end;
FindClose(f);
end;
Скорее всего вариант не лучший, но работает.
rosl (2005-03-04 09:30:00) [8]нужен небольшой пример
мне скидывали ответ на вопрос (но немного не то, что нужно)
просто в отдельный каталог бросают файлы для отправки по почте
вот я и хочу сделать прогу, которая бы выдавала сообщение о отм, что в этом каталоге появился файл. Мне нужен пример того, как проверить папку на наличие в ней файлов.
Anatoly Podgoretsky (2005-03-04 09:08:00) [9]Какой из трех вопросов не понятен?