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

Вниз

Вопрос по TreeView   Найти похожие ветки 

 
leonidus   (2003-09-19 22:00) [0]

Подскажите пожалуйста как с помощью компонента TreeView отобразить файловую структуры данной директории если все содержащиеся в ней файлы с полным путем к ним я уже нашел и поместил в массив?


 
Palladin   (2003-09-20 00:28) [1]

и где затруднения?


 
leonidus   (2003-09-20 01:05) [2]

Затруднения в том как создать древовиднуб структуру, если это не сложно киньте кусочек кода.


 
jack128   (2003-09-20 01:09) [3]

TreeView1.AddChild(<родительский узел>, <название узла>);


 
Palladin   (2003-09-20 01:34) [4]

... и ведь в справке пример присутствует, в папке demos пример присуствует... где он только не присутствует :)


 
ZEE   (2003-09-20 10:58) [5]

http://www.sources.ru/delphi/delphi_directory_tree.shtml


 
leonidus   (2003-09-20 12:26) [6]

> ZEE огромное спасибо, я еще не во всем там разобрался, но это то что надо. Спасбо всем.


 
leonidus   (2003-09-22 01:35) [7]

Блин че-то я туплю, вот код который я использую для заполнения TreeView из элементов массива turn[i] (размер массива razm_turn). В массиве находятся URL-ссылки на документы хранящиеся на сервере в папках. Все ссылки вида http://www.abcd.ru/...... Переменная pr_start_url содержит начальный URL т.е. http://www.abcd.ru/

procedure AddNode(ConstNode: TTreeNode; name: String; HasChildren:boolean; var active_node:TTreeNode);
//процедура добавляет в узел ConstNode узел name указывает
//будет ли этот узел содержать дочернии и возвращает
//active_node указатель на созданный узел
begin
active_node:=form1.treeview1.Items.AddChild(ConstNode,name);
if HasChildren then ConstNode.HasChildren := True;
end;

Непоследственно код вызова процедуры добавления.

treeView1.Items.Clear;
node_start:=treeview1.Items.Add(nil,pr_start_url);

for i:=1 to razm_turn do
begin
//удаляем из ссылки первую часть ( http://www.abcd.ru/) она нам не нужна
st:=copy(turn[i],length(pr_start_url)+1,length(turn[i]));

nom:=1;
node2:=node_start;
for l:=1 to length(st) do
begin
if st[l]="/" then
begin
st1:=copy(st,nom,l-nom);
p:=ansipos(".",st1); //определяем это файл или директория
if(nom=1)and(p=0) then AddNode(node_start,st1,true,node2);
if(nom=1)and(p<>0) thenAddNod(node_start,st1,false,node2);
if(nom<>1)and(p=0) then AddNode(node2,st1,true,node2);

nom:=l+1;
end;
end;

// получаем имя файла после последнего слеша
st1:=copy(st,nom,length(st));
if nom=1 then AddNode(node_start, st1, false, node1)
else AddNode(node2, st1, false, node1);

end;
end;

В принципе все работает, но мне кажется что алгоритк какой-то топорный, но все бы ничего если бы только в случае когда в массиве есть две ссылки такого вида:
http://www.abcd.ru/images/pic1.jpg
http://www.abcd.ru/images/pic1.jpg
то я получаю ДВА узла с именем images хотя мне нужен один и в нем два под узла pic1.jpg и pic2.jpg.

Подскажите пожалуйста где как исправить такой глюк.


 
leonidus   (2003-09-22 09:59) [8]

Подскажите плиз!!!


 
ZEE   (2003-09-22 10:25) [9]

>Подскажите пожалуйста где как исправить такой глюк.
после строки
st1:=copy(st,nom,l-nom);
проверяй нет ли уже узла с таким именем

и еще
p:=ansipos(".",st1); //определяем это файл или директория
разве в названии директорий не может быть точки - лучше проверять нет справа от названия этой директории символа "/"


 
Palladin   (2003-09-22 10:26) [10]

может следует сразу читать в treeview чем маятся дурью с парснигом...


 
leonidus   (2003-09-22 13:35) [11]

>Palladin сразу в treeview не получится, т.к. в массиве храняться не обработанные ссылки, а в treeview надо отображать ссылки по мере их отработки (программа выкачивает эти файлы и отображает структуру сайта). Помогите пожалуйста модифицировать алгоритм.


 
leonidus   (2003-09-22 22:55) [12]

>Мастера помогите пожалуйста!


 
Palladin   (2003-09-23 08:09) [13]

Гораздо проще и быстрее собрать путь по дереву чем разобрать в дерево...


 
leonidus   (2003-09-23 09:44) [14]

>Palladin я Вас не понимаю. Я не профессиональный программист, меня просто попросили написать эту прогу. Если у Вас есть кусок кода пожалуйста поделитесь или скажите что надо изменить в моем. Заранее благодарен.


 
Palladin   (2003-09-23 09:47) [15]

Существует Teleport, прекрасная скачивалка сайтов, много других инструментов написанных профессиональными программистами. Почему же Вас попросили написать?


 
leonidus   (2003-09-23 23:55) [16]

Это другой вопрос. Пожалуйста подскажите мне ответ на мой.



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

Форум: "Основная";
Текущий архив: 2003.10.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.071 c
1-18309
ah
2003-09-23 23:03
2003.10.06
почему так происходит - открываю файл при закрывании дает ошибку


1-18342
Wide
2003-09-22 18:28
2003.10.06
Как переменную объявленную в Форме 1 использовать в форме 2


14-18606
Е-Моё имя
2003-09-16 14:32
2003.10.06
Именинники 16 сентября


1-18463
First_May
2003-09-24 13:21
2003.10.06
EnumResourceNames...


14-18542
A_n_d_y!!!
2003-08-29 11:33
2003.10.06
Ищю толкового програмиста





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