|
Вопрос # 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
|
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|