![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск директорий. [D6, Win95/98, Win2k, WinXP]
independant © (2003-11-21 16:01:00)
Существует ли функция WinApi или процедура в Delphi, возвращающая имена всех поддиректорий в заданой директории ?
Благодарю.
MBo (2003-11-27 16:40:00) [1]
там есть поиск
independant (2003-11-27 16:29:00) [2]
ЭЭЭ-MBo, ну не будь нехорошим человеком, подкинь ссылку на фак(FAQ не маленький) :)
MBo (2003-11-27 16:26:00) [3]
FAQ еще раз ;)
independant (2003-11-27 16:25:00) [4]
Неужели никто не сможет мне помочь?
Dimka Maslov, мог бы ты уточнить, как в приведенном коде твое условие заюзать.
independant (2003-11-26 17:05:00) [5]
Немного изменил код, но проблема по прежнему осталась-не получаю названий директорий с атрибутом "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- в какое место вставлять условие-у меня возникает ошибка?
Dimka Maslov (2003-11-25 17:19:00) [6]
(data32 and FILE_ATTRIBUTE_DIRECTORY) <> 0
Alexis (2003-11-25 15:52:00) [7]
А ссылку подкинуть сразу можно :) ?
MBo (2003-11-25 15:50:00) [8]
в FAQ есть
independant (2003-11-25 15:01:00) [9]
Благодарю за ответы, кое-что ясно.Попытался я написать поиск всех директорий в 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
Anatoly Podgoretsky (2003-11-23 10:17:00) [10]
Это ты кому?
Если мне, то приходится искать и проблем нет.
Dimman1 (2003-11-22 18:41:00) [11]
а ты сам поищ на сетевом диске
Anatoly Podgoretsky (2003-11-22 18:22:00) [12]
Какие левые, какие есть такие и есть.
Dimman1 (2003-11-22 18:17:00) [13]
кстати, кто в курсе, почему FindFirst - FindNext не работают (точнее работают, но там атрибуты какие то левые), если ищем на сетевом диске, а не на локальном? (в частности на WinXP наблюдал)
Юрий Ж. (2003-11-22 17:55:00) [14]
FindFirstFile, FindNextFile + посмотри исходники FindFirst() и FindNext() из модуля SysUtils.
К этому надо еще проверять (SearchRec.Attr and faDirectory) = faDirectory, то это директория
VMcL (2003-11-21 20:06:00) [15]
FindFirstFile, FindNextFile + посмотри исходники FindFirst() и FindNext() из модуля SysUtils.