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

Вниз

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

 
independant   (2003-11-21 16:01) [0]

Существует ли функция WinApi или процедура в Delphi, возвращающая имена всех поддиректорий в заданой директории ?

Благодарю.


 
VMcL ©   (2003-11-21 20:06) [1]

FindFirstFile, FindNextFile + посмотри исходники FindFirst() и FindNext() из модуля SysUtils.


 
Юрий Ж. ©   (2003-11-22 17:55) [2]

FindFirstFile, FindNextFile + посмотри исходники FindFirst() и FindNext() из модуля SysUtils.
К этому надо еще проверять (SearchRec.Attr and faDirectory) = faDirectory, то это директория


 
Dimman1 ©   (2003-11-22 18:17) [3]

кстати, кто в курсе, почему FindFirst - FindNext не работают (точнее работают, но там атрибуты какие то левые), если ищем на сетевом диске, а не на локальном? (в частности на WinXP наблюдал)


 
Anatoly Podgoretsky ©   (2003-11-22 18:22) [4]

Какие левые, какие есть такие и есть.


 
Dimman1 ©   (2003-11-22 18:41) [5]

а ты сам поищ на сетевом диске


 
Anatoly Podgoretsky ©   (2003-11-23 10:17) [6]

Это ты кому?
Если мне, то приходится искать и проблем нет.


 
independant   (2003-11-25 15:01) [7]

Благодарю за ответы, кое-что ясно.Попытался я написать поиск всех директорий в C:\Program Files :

var
f1:Cardinal;
data32:Win32_Find_Data;

begin
f1:=FindFirstFile("C:\Program Files\*",data32);
if data32.dwFileAttributes=FILE_ATTRIBUTE_DIRECTORY then
begin
dir_n:=strpas(data32.cFileName);
showmessage(dir_n);
end;
repeat
FindNextFile(f1,data32);
if data32.dwFileAttributes=FILE_ATTRIBUTE_DIRECTORY then
begin
dir_n:=strpas(data32.cFileName);
showmessage(dir_n);
end;
until dir_n="";

end.

Но беда в том, что мой код получает не все директории :( Судя по showmessage получили .+..+19 имен, а всего в C:\Program Files 26 директорий.

Если кто подобное делал, приведите пожалуйста код или укажите, что у меня неверно.
2Юрий Ж. Ты предложил проверять
(SearchRec.Attr and faDirectory)=faDirectory
У какой процедуры эти параметры? Разве не подойдет
data32.dwFileAttributes=FILE_ATTRIBUTE_DIRECTORY


 
MBo ©   (2003-11-25 15:50) [8]

в FAQ есть


 
Alexis ©   (2003-11-25 15:52) [9]

А ссылку подкинуть сразу можно :) ?


 
Dimka Maslov ©   (2003-11-25 17:19) [10]

(data32 and FILE_ATTRIBUTE_DIRECTORY) <> 0


 
independant   (2003-11-26 17:05) [11]

Немного изменил код, но проблема по прежнему осталась-не получаю названий директорий с атрибутом "Read-Only".

var
fperv:Cardinal;
lg:Boolean;
data32:Win32_Find_Data;

begin
fperv:=FindFirstFile("C:\Program Files\*.*",data32);
if data32.dwFileAttributes=FILE_ATTRIBUTE_DIRECTORY then
begin
dir_n:=strpas(data32.cFileName);
if (dir_n<>".") and (dir_n<>"..") then
showmessage(dir_n);
end;
repeat
lg:=FindNextFile(fperv,data32);
if (data32.dwFileAttributes=FILE_ATTRIBUTE_DIRECTORY)
or (data32.dwFileAttributes=FILE_ATTRIBUTE_READONLY) then
begin
dir_n:=strpas(data32.cFileName);
if (dir_n<>".") and (dir_n<>"..") then
showmessage(dir_n);
end;
until lg=false;
end.

Причем на результат не влияет то, включаю ли я в прогу выделенное условие или нет !
Если у кого была подобная проблема укажите, в чем дело.
2Dimka Maslov- в какое место вставлять условие-у меня возникает ошибка?


 
independant   (2003-11-27 16:25) [12]

Неужели никто не сможет мне помочь?
Dimka Maslov, мог бы ты уточнить, как в приведенном коде твое условие заюзать.


 
MBo ©   (2003-11-27 16:26) [13]

FAQ еще раз ;)


 
independant   (2003-11-27 16:29) [14]

ЭЭЭ-MBo, ну не будь нехорошим человеком, подкинь ссылку на фак(FAQ не маленький) :)


 
MBo ©   (2003-11-27 16:40) [15]

там есть поиск



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

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

Наверх




Память: 0.49 MB
Время: 0.016 c
3-1993
Sfera
2004-01-10 12:18
2004.02.02
Очистка столбца


1-2115
Grinder
2004-01-19 00:20
2004.02.02
TextToShortcut с клавишей Win


14-2315
goga
2004-01-11 18:40
2004.02.02
Я бы добавил в FAQ следующее.


1-2189
V-A-V
2004-01-21 07:51
2004.02.02
Определение екзешника


3-1987
Юля П
2004-01-08 16:00
2004.02.02
Запрос с группировкой записей