Главная страница
    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.47 MB
Время: 0.015 c
1-1126971832
DimDim
2005-09-17 19:43
2005.10.09
Модальное окно "прячется" за основную форму ???


14-1126693482
Булат Шакиров
2005-09-14 14:24
2005.10.09
Россия снизила производство водки на 9%


14-1126702045
Копир
2005-09-14 16:47
2005.10.09
О древних цивилизациях.


14-1127143097
TUser
2005-09-19 19:18
2005.10.09
PCI-Express vs AGP


14-1125265756
Piter
2005-08-29 01:49
2005.10.09
Гради Буч - "Объектно-ориентированный анализ и проектирование..."





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