Страница 1 из 1

DirectoryListBox - движение по подкаталогам

Добавлено: 02 сен 2008, 08:23
Dr_Grizzly
Всем привет! Такая вот штука, у меня уже голова опухла, от того что не могу разобраться с алгоритмом перемещения по подкаталогам ))

Как написать такой код, чтоб не пропустить ни одного подкаталога )) Т.е. пользователь выбрал каталог, и хочет из него и всех его подкаталогов выбрать нужные файлы. С выбором файлов вопросов нет, а вот как автоматически двигаться и в каком направлении по каталогам, не могу сообразить....

Используем компоненту ТShellTreeView, с ней полегче... мне кажется... DirectoryListBox - слишком дубовая........

Re: DirectoryListBox - движение по подкаталогам

Добавлено: 02 сен 2008, 18:51
Dr_Grizzly
Я проблему вижу такую - сколько уровней в дереве каталогов столько циклов мне нужно, чтоб по ним пробегать...

Код: Выделить всё

procedure TForm1.Button1Click(Sender: TObject);
var
s,i:Integer;
begin
ListBox1.Clear;

//-----------Открыть первую папку и каждую первую подпапку----------
i:=DirectoryListBox1.ItemIndex+1;
s:=DirectoryListBox1.ItemIndex;
ListBox1.Items.Add(DirectoryListBox1.Items.Strings[DirectoryListBox1.ItemIndex]);  
repeat
DirectoryListBox1.ItemIndex:=i;
ListBox1.Items.Add(DirectoryListBox1.Items.Strings[i]); // Вместо этой строки можно воткнуть любон действие с открытой папкой
DirectoryListBox1.OpenCurrent;
i:=i+1;
until DirectoryListBox1.count-1=DirectoryListBox1.ItemIndex;

//-----------Закрыть открытые папки и вернуться в начальную папку----------
i:=i-2;
s:=s-1;
repeat
DirectoryListBox1.ItemIndex:=i;
DirectoryListBox1.OpenCurrent;
ListBox1.Items.Add(DirectoryListBox1.Items.Strings[i]);
i:=i-1;
until s=i;

Вот что на данный момент намутил... белеберда честно говоря )))) Но думаю куда-то в эту сторону копать нужно ))))

Re: DirectoryListBox - движение по подкаталогам

Добавлено: 02 сен 2008, 19:22
Dr_Grizzly
Ну вот, поменял компоненту, и сразу ответ нашелся

t:=1;
repeat
ShellTreeView1.Items.Item[t].Expand(false);
t:=t+1;
until t=ShellTreeView1.Items.Count-1;

Re: DirectoryListBox - движение по подкаталогам

Добавлено: 09 сен 2008, 11:09
Игорь Акопян
обычно это делалось рекурсивной процедурой...

Re: DirectoryListBox - движение по подкаталогам

Добавлено: 13 окт 2008, 19:09
sasha3050
Пожалуйста помогите очень нужно!!!!!!!!!Написать программу на Paskal, которая вычисляет среднюю длину слов в файле, который содержит текст.В данном случае будет считатьтся любая строка символов, которая начинается и заканчивается одним с следующих елеметов: пробел, запятая, точка, начало строки и конец строки.В программе должна быть обозначена функция, которая получает в качестве аргумента поток ввода с файла.