![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: 1 Всего: 0 |
Здраствуйте, врятли кто ответит на этот вопрос ,но всетаки попытаютаюсь объяснить проблему.
Что я пытаюсь сделать: Пытаюсь сделать дерево папок(TTreeView) на такое-же как в самой проге RegEdit.exe (при этом это дерево будет отображаться на удаленном компе, но этот момент неоноситься к проблеме), вообшем делаю дерево и заполняю его структуру по мере продвижения по папкам. Тоесть когда юзер нажимает на крестик что-бы просмореть подпапки, то в этот момент прога получает подпапки и отоброжает их. Проблема: Например юзер открыл(пролез по какомо-ту количеству папок) и сделал какие-то изменения и заходет обновить папки и вот тут возникает следушая проблема - некоторые папки например
Имеют очень большое количество подпапок. Тоесть если у меня есть массив строк в которых храняться рути открытых папок, но по ним я немогу выстроить дерево потому-что если брать эту задачю перебором то занимает нууу очень много времени. |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 15 Всего: 98 |
что-то проблемы совсем не увидел...
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Ak47black |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: 1 Всего: 0 |
Так ты наверно не доконца опять непрочитал или неврубился, ну или такого неделал. Короч если невъежаешь то непиши Добавлено @ 18:01 Уточню именно в чем проблема например путь
Сначала добавляю в дерево папку HKEY_CLASSES_ROOT потом подпапки HKEY_CLASSES_ROOT, а потом что-бы к .ad добавить OpenWithList надо все перебирать иначе невижу вариантов как найти папку в дереве .ad куда добавить далше по дереву и этот процесс очень много времени занимает если две папки открыты например
то половины минуты Это сообщение отредактировал(а) Ak47black - 3.5.2007, 18:02 |
||||||
|
|||||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 15 Всего: 98 |
зачем все перебирать? ты добавляеш к папке ".ad" значит у тебя есть ее хендл/указатель вот к этой папке и добавляй...
Добавлено через 1 минуту и 1 секунду
или (что более вероятно) ты так объяснил... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: 1 Всего: 0 |
Ну во нарисую
![]() Значит делаю так разбил строку
на массив из элементов(или уровней на картинке) HKEY_CLASSES_ROOT, .ad, OpenWithList беру первый элемент, добовляю в TTreeView и запомянаю его, запрашиваю его дочерние папки, довляю эти дочерние папки как дочернии, перебираю все дочернии нахожу с именем .ad и запрашиваю по этому пкти дочернии папки, добовляю дочернии ишю OpenWithList и т.д. Так понятно, ну незнаю просто такая проблема что трудно объяснить саму суть. Вот и этото процесс перебирания меня не устраивает, потому что очень много времени занимает. Это сообщение отредактировал(а) Ak47black - 3.5.2007, 18:42 |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 15 Всего: 98 |
а зачем ты этим перебирательством занимаешся? заполняй детей пока они есть, как кончились -- поднимайся на уровень выше...
т.е.: запросил всех детей корня, добавил первого, запросил всех его детей, запросил все детей ребенка, тут детей нету -- запрашивай всех детей второго узла корня (все это естественно рекурсивно) -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
извини конечн... но из-за ошибок(опечаток?) и построения предложений даже после 3го прочтения не понял, в чем проблема.
-------------------- There are always someone smarter than you... |
|||
|
||||
| Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: 1 Всего: 0 |
Извиняюсь за то что несмог описать проблему, просто трудно описать. Народ еше раз Sorry
Шас посмотрю как-бы тут лучше объяснить. |
|||
|
||||
| Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: 1 Всего: 0 |
Дано:
1.TtreeView в котором отображаеться дерево папок из реестра. 2.Массив из строк OpenedFolders, каждая строка представляет путь открытой папки из TtreeView , уточню – открытой папкой я сшитаю ту попку которая находитьяся не на самом последнем уровне ,а на предпоследнем относительно своих дочерних. Например: HKEY_CLASSES_ROOT\CrystalReports102.DTSConnection.0\CLSID тоесть CLSID будет иметь один уровень дочених. Цель: Построить такое-же дерево папок рееста с учетом того что эти в реестре произошли какието изменения.(Refresh) Мой тот способ плохо работает, как предлогаете сделать? _hunter, говорит похожий способ что и я, так вот чем он плох Например возмем HKEY_CLASSES_ROOT\CrystalReports102.DTSConnection.0\CLSID Делаем рекурсию Сначала запрашиваем ‘детей’ Очень надеюсь что в это раз понятно написал Это сообщение отредактировал(а) Ak47black - 3.5.2007, 20:48 |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
а ты видел, как системный диалог выбора папки работает...
что-то типа того: 1) "строишь" дерево сразу до необходимого узла без "лишних" детей. 2) В фоновом режиме подгружаешь "недостающих" детишек -------------------- There are always someone smarter than you... |
|||
|
||||
| Ak47black |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2205 Регистрация: 2.12.2005 Репутация: 1 Всего: 0 |
Ну чтото такое я вчера придумал сам, но тут другая проблема появляеться.
Порядок отображения A-Z меняеться, а что-бы его пересортировать нужен опять перебор) получаеться та-же проблема. Опять новые дубинки Это сообщение отредактировал(а) Ak47black - 3.5.2007, 21:07 |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
да не особо то и интересная.
просто пораскинуть мозгами. зачем сортировать после подгрузки всех детей, если можно подгрузить их так, чтобы уже все было отсортировано.... -------------------- There are always someone smarter than you... |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 15 Всего: 98 |
без полного перескана реестра ты и так не узнаеш где у тебя изменения произошли... а если делается полный перескан -- то и дерево строй заново.
или ты на уведомления об изменениях подписался? тогда храни рядом с хендлом папки жендл узла своего дерева. -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |