Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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("&#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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.041 c
2-1209999304
TStas
2008-05-05 18:55
2008.06.08
Что такое class of ?


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


15-1208980904
MM_ASH
2008-04-24 00:01
2008.06.08
Как сделать свой проект


15-1209317345
No_Dead
2008-04-27 21:29
2008.06.08
Что пишут в логах?


15-1208933357
sql
2008-04-23 10:49
2008.06.08
MS SQL 2000





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский