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

Вниз

Получение списка всех подкаталогов на всех логических дисках   Найти похожие ветки 

 
NeoMaster ©   (2005-08-09 18:27) [0]

Процедуру поиска подкаталогов на одном логическом диске я осилил, а мне нужно осуществить собственно САБЖ. Вот упрощённый код моей процедуры поиска подкаталогов.
Procedure WatchSubDirectoies(CurrentFolder: String);
Var
 SearchRec: TSearchRec;
Begin
 If CurrentFolder <> "" then
 CurrentFolder:= CorrectDirectoryName(CurrentFolder);
try
 If FindFirst(CurrentFolder + "*.*", faDirectory, SearchRec) = 0 then
   repeat
   if ((SearchRec.Attr and faDirectory) = faDirectory) and not ((SearchRec.Name = ".") or (SearchRec.Name = "..")) then
       Begin
         WatchSubDirectoies(CurrentFolder + SearchRec.name);
         Settings.DFW.Add(CurrentFolder + SearchRec.name + "\");
       End;
   until
     FindNext(SearchRec) <> 0;
finally
     FindClose(SearchRec);
end;
End;

Т.е. есть список каталогов, которые нужно просмотреть Settings.DFW: TStrings. При вызове этой процедуры я передаю ей в качетсве параметра Первое значение списка Settings.DFW. Найденные подкаталоги записываются в этот же список. Пока всё работает. Из процедуры видно, что во время выполнения она сама себя ещё вызывает. Так что если в список Settings.DFW записать два начальных каталога и вызывать таким способом:
For i:=0 To Settings.DFW.Count - 1 do WatchSubDirectoies(Settings.DFW.Strings[i]), то ничего не получается.


 
TUser ©   (2005-08-09 18:32) [1]

GetDriveType в цикле


 
NeoMaster ©   (2005-08-09 18:37) [2]

Тут дело в том, что процедура вызывает сама себя. И если вызывать ей в цикле, то процедура может ещё выполнятся, а её уже снова вызывают. Ну и естественно ошибка и ничего не работает(я пишу сервис). Посмотрите код процедуры и код её запуска в цикле. Может поможите его доделать или переделать.


 
IceBeerg ©   (2005-08-09 18:38) [3]

Запуздырь вызов процедуры WatchSubDirectoies(... в другую процедуру, где введи временный объект и по мере обхода дисков добавляй к нему резултат возвращаемый твоей процедурой...


 
Anatoly Podgoretsky ©   (2005-08-09 18:50) [4]

Пока не закончится первый вызов, цикл не перейдет к следующей иттерации.


 
NeoMaster ©   (2005-08-09 19:53) [5]

>Anatoly Podgoretsky:
Фактически вызываемая в цикле процедура завершается, а вызывается она из другого места уже вне цикла и цикл продолжает свою работу. Одним словом без цикла работает, но стоит вызвать несколько раз эту процедуру - не работает. Может предложите свой вариант получения списка всех подкаталогов всех жёстких дисков.


 
ANB ©   (2005-08-09 20:45) [6]


> NeoMaster ©   (09.08.05 19:53) [5]
- я могу : Сесть и подумать над предыдущими постами.
Могу кинуть пример поиска по каталогам всех дисков. Переделывать под себя будешь сам.


 
NeoMaster ©   (2005-08-10 22:51) [7]

ok



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

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

Наверх





Память: 0.46 MB
Время: 0.015 c
2-1125578827
Solomon
2005-09-01 16:47
2005.10.09
вещественные числа в различных Виндах


14-1126699563
Daro
2005-09-14 16:06
2005.10.09
Есть такая проблема


14-1127193741
Ega23
2005-09-20 09:22
2005.10.09
С днём рождения! 20 сентября


14-1127210398
ПЛОВ
2005-09-20 13:59
2005.10.09
Напомните...


14-1126961781
astronom
2005-09-17 16:56
2005.10.09
Преобразование набора фотографий в 3Д модель.





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