Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.02.02;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.02.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.012 c
1-2208
DmitryA
2004-01-20 17:12
2004.02.02
ScrollBar в ComboBox


1-2127
int64
2004-01-19 16:45
2004.02.02
ADO.NET


14-2324
MV
2004-01-13 14:32
2004.02.02
По поводу резонанса


1-2174
V-A-V
2004-01-21 09:52
2004.02.02
Запуск DOS задачи


3-2025
Mery
2004-01-06 11:17
2004.02.02
Автоподстановка





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский