| 
| 
 | Вопрос # 552/ вопрос открыт / | 
 |  Меня Зовут Стас. Я начинающий программер на Delphi. Хотя преход с паскаля на дельфи быстро преодолел, но ещё мало что умею (с паскалём,
 вроде, неплохо - езжу на областные олинмпиады поинформе).
 Я прочитал статью "Обход дерева каталогов с прерыванием и
 возобновлением или "Куда мы идем завтра?" на  Delphi.int.ru.  Так вот
 какая у мя проблемма. Она похожа на рассматриваемую в статье. У меня
 на форме есть два скреплённых объекта - TshellList- и
 TshellTree- Wiew. Мне нужно обойти все подкаталоги и загрузить все
 вайлы в TrichEdit(короче - всё,что есть в папке слить в одно текстовое
 поле RichEdit)!  Функция, которая загружает один файл у меня написана,
 но проблемы возникли с написанием рекурсивного алгоритма - как не
 пытался с помощью GetNext и GetNextSubling, но ничего не вышло.(руки,
 видать, не стого места растут.. :-) .. )  Так что помогите, плиз,
 написать такой алгоритм! Хотябы расскажите как пользоваться методом
 GetNExt  и GetNextSubling!
 
|  |   Вопрос задал: Grin (статус: Посетитель)Вопрос отправлен: 5 мая 2007, 07:09
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Вадим К Здравствуйте, Grin!А мож задачку переформулируем? Зачем сканировать тревью, если можно напрямик? Вот набросок кода
 
 //Это наша процедура обработки файлов
 procedure MyLoadFile(fn:string);
 begin
 form1.Memo1.Lines.Add(fn);
 end;
 //Ну это собственно сканирование
 procedure Scan(dir:string);
 var fs:TSearchRec;
 begin
 if FindFirst(dir+'\*.*',faAnyFile,fs)=0 then
 repeat
 if (fs.Name='.') or (fs.Name='..') then
 Continue;
 if (fs.Attr and faDirectory) <>0 then
 Scan(dir+'\'+fs.Name)
 else
 MyLoadFile(dir+'\'+fs.Name);
 until FindNext(fs)<>0;
 FindClose(fs);
 end;
 
 Пользуемся так
 Scan('C:\Windows\System32'); //Без слеша в конце!!!
 Если путь приходит извне, то проконтролировать слеш в конце можно функцией
 ExcludeTrailingPathDelimiter(dir)
 Она уберёт слеш в конце( а если нечайно в новых виндах разделить другой будет для каталогов, то его)
 
|  | Ответ отправил: Вадим К (статус: Академик)Время отправки: 5 мая 2007, 17:26
 Оценка за ответ: 5
 |  
 Мини-форум вопросаМини-форум пуст. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |