Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.06.08;
Скачать: CL | DM;

Вниз

Проверка директория   Найти похожие ветки 

 
Patrick   (2008-05-14 16:35) [0]

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


 
Palladin ©   (2008-05-14 16:37) [1]

Функция ДиректорияСуществует(Директория:Строка):ЛогическийТип;


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

Проверка самого катлога так
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


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


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

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

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


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

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


 
Palladin ©   (2008-05-14 16:52) [5]

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


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

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

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("&#202;&#224;&#242;&#224;&#235;&#238;&#227; &#237;&#229; &#239;&#243;&#241;&#242;&#238;&#233;.")
    else ShowMessage("&#202;&#224;&#242;&#224;&#235;&#238;&#227; &#239;&#243;&#241;&#242;&#238;&#233;.");
end;


 
Palladin ©   (2008-05-14 16:56) [7]


> Pointer(S)

PChar


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

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;


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

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


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

Renegat   (14.05.08 16:58) [8]

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


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

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


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

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;


?


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


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

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


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

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

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


 
Leonid Troyanovsky ©   (2008-05-14 18:16) [15]


> Patrick   (14.05.08 16:35)

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

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

--
Regards, LVT.


 
Anatoly Podgoretsky ©   (2008-05-14 21:05) [16]

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


 
Anatoly Podgoretsky ©   (2008-05-14 21:06) [17]


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

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


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

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


 
Anatoly Podgoretsky ©   (2008-05-14 22:20) [19]

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

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


 
palva ©   (2008-05-14 22:41) [20]


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

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


 
Leonid Troyanovsky ©   (2008-05-14 23:39) [21]


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

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

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

--
Regards, LVT.



Страницы: 1 вся ветка

Текущий архив: 2008.06.08;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.019 c
2-1210851132
Кирей
2008-05-15 15:32
2008.06.08
как правильно в текст запроса написать дату


15-1209313105
Simpson
2008-04-27 20:18
2008.06.08
Вирусы


10-1146837285
Teddy24
2006-05-05 17:54
2008.06.08
Проблема подключенения DCOMConnection


15-1208952397
Ega23
2008-04-23 16:06
2008.06.08
Можно ли приблизительно оценить длину записи


15-1209268074
sauron
2008-04-27 07:47
2008.06.08
Разработчикам...