Форум: "Начинающим";
Текущий архив: 2008.06.08;
Скачать: [xml.tar.bz2];
ВнизПроверка директория Найти похожие ветки
← →
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("Êàòàëîã íå ïóñòîé.")
else ShowMessage("Êàòàëîã ïóñòîé.");
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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.041 c