Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проверка директория [D7, XP]


Страницы:   1 2

Patrick ©   (2008-05-14 16:35:00) 

Подскажите, каким наиболее простым способом проверить программно пустой директорий или нет?


Leonid Troyanovsky   (2008-05-14 23:39:00) [1]


> palva ©   (14.05.08 22:41) [20]

> Удалить директорию и всё. Если удалилась, значит была пустая.

Если удаление и было целью проверки, то,
безусловно, поступать надо именно так.

--
Regards, LVT.


palva   (2008-05-14 22:41:00) [2]


> Сейчас папка пуста, через несколько колов времени - нет.
> Сл-но, польза подобной функции близка к нулю.

Удалить директорию и всё. Если удалилась, значит была пустая. И никто туда уже ничего не положит.


Anatoly Podgoretsky   (2008-05-14 22:20:00) [3]

> Умище  (14.05.2008 22:02:18)  [18]

О да, упустил этот факт.


Умище   (2008-05-14 22:02:00) [4]

>Анатолий Подгорецкий
+ обязательная проверка совпадения имени с '.' или '..'


Anatoly Podgoretsky   (2008-05-14 21:06:00) [5]


> Подскажите, каким наиболее простым способом проверить программно
> пустой директорий или нет?

Самое простое FindFirst с маской *.* и аттрибутом faAnyFile


Anatoly Podgoretsky   (2008-05-14 21:05:00) [6]

В сообшение надо просто написать, что на момент времени Х папка пуста.


Leonid Troyanovsky   (2008-05-14 18:16:00) [7]


> Patrick   (14.05.08 16:35)

> Подскажите, каким наиболее простым способом проверить программно
> пустой директорий

Сейчас папка пуста, через несколько колов времени - нет.
Сл-но, польза подобной функции близка к нулю.

--
Regards, LVT.


Игорь Шевченко   (2008-05-14 17:51:00) [8]

Германн ©   (14.05.08 17:47) [13]

В моем случае пустая это та, которая не содержит ничего.


Германн   (2008-05-14 17:47:00) [9]


> Игорь Шевченко ©   (14.05.08 17:36) [12]

Пустая директория это директория не содержащая файлов? А если в ней есть поддиректории она пустая?


Игорь Шевченко   (2008-05-14 17:36:00) [10]

function DirectoryIsEmpty (const DirName: string): Boolean;
var
 F: TSearchRec;
 FindResult: Integer;
 S: string;
begin
 S := IncludeTrailingPathDelimiter(DirName)+'*.*';
 FindResult := FindFirst(S, faAnyFile, F);
 while (FindResult = 0) and ((F.Name = '.') or (F.Name = '..'))
    and ((F.Attr and faDirectory) <> 0) do
   FindResult := FindNext(F);
 Result := FindResult <> 0;
 FindClose(F);
end;


?


Patrick   (2008-05-14 17:15:00) [11]

Директорий пустой , а выдается Yes и еще на FileClose ругается что тип параметров не совпадает


Игорь Шевченко   (2008-05-14 17:09:00) [12]

Renegat   (14.05.08 16:58) [8]

Сам проверял ?


Renegat   (2008-05-14 17:00:00) [13]

Ибо надо закрывать хендл после завершения поиска. И ещё, конечно, [7].


Renegat   (2008-05-14 16:58:00) [14]

procedure TForm1.Button1Click(Sender: TObject);
var
 FileInfo: TWin32FindDataA;
 FindResult: dword;
 s: string;
begin
 s := 'C:\!!!\*.*';
 FindResult := FindFirstFile( Pointer(S), FileInfo);
 if FindResult<>$FFFFFFFF then begin
   ShowMessage('Yes.')
   FindClose(FindResult);
 end else ShowMessage('No.');
end;


Palladin   (2008-05-14 16:56:00) [15]


> Pointer(S)

PChar


Patrick   (2008-05-14 16:55:00) [16]

Так значит примерно так

procedure TForm1.Button1Click(Sender: TObject);
var
   FileInfo : TWin32FindDataA;
   FindResult : dword;
   s : string;
begin
 s := 'C:\!!!\*.*';
 FindResult := FindFirstFile( Pointer(S), FileInfo);
 if FindResult $0FFFFFFFFh
    then ShowMessage('Êàòàëîã íå ïóñòîé.')
    else ShowMessage('Êàòàëîã ïóñòîé.');
end;


Palladin   (2008-05-14 16:52:00) [17]

хм... а ведь точно... не вник в вопрос...


Patrick   (2008-05-14 16:47:00) [18]

Так насколько я понимаю существование директория, а вот пустой он или нет?


Renegat   (2008-05-14 16:43:00) [19]

Дык дело не в её наличии/отсутствии, а в том, есть ли в ненй файлы или нет.
Это реализуется так:

1) приписываешь к имени папки \*.*
2) полученную строчку скармливаешь FindFirstFile
3) если возвращённый результат равен 0FFFFFFFFh, папка пуста. Выходим
4) если нет, в ней есть хотя бы один файл/папка. Вызываем FindClose(возвращённый_результат). Выходим


Mozgan   (2008-05-14 16:42:00) [20]

Проверка самого катлога так
if not DirectoryExists('путь к папке') then
showmessage ('папки нет') else showmessage('папка на емсте')


Если проверять наличие файлов в папке то используй


var
 F: TSearchRec;
 Path: string;
 Attr: Integer;
begin
 {Искать все файлы в заданной директории с расширение .wav}
 Path := 'e:\audio\album31\*.wav';
 {которые имеют атрибуты "Только для чтения" и "Архивный"}
 Attr := faReadOnly + faArchive;

 FindFirst(Path, Attr, F);

 {Если хотя бы один файл найден, то продолжить поиск}
 if F.name <> '' then
 begin


Это самый простой алгоритм поиска файлов в папке


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо