| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Проблема с реестор в Windows |
| Автор: Ak47black 3.5.2007, 17:47 | ||
| Здраствуйте, врятли кто ответит на этот вопрос ,но всетаки попытаютаюсь объяснить проблему. Что я пытаюсь сделать: Пытаюсь сделать дерево папок(TTreeView) на такое-же как в самой проге RegEdit.exe (при этом это дерево будет отображаться на удаленном компе, но этот момент неоноситься к проблеме), вообшем делаю дерево и заполняю его структуру по мере продвижения по папкам. Тоесть когда юзер нажимает на крестик что-бы просмореть подпапки, то в этот момент прога получает подпапки и отоброжает их. Проблема: Например юзер открыл(пролез по какомо-ту количеству папок) и сделал какие-то изменения и заходет обновить папки и вот тут возникает следушая проблема - некоторые папки например
Имеют очень большое количество подпапок. Тоесть если у меня есть массив строк в которых храняться рути открытых папок, но по ним я немогу выстроить дерево потому-что если брать эту задачю перебором то занимает нууу очень много времени. |
| Автор: _hunter 3.5.2007, 17:54 |
| что-то проблемы совсем не увидел... |
| Автор: Ak47black 3.5.2007, 17:57 | ||||||
Так ты наверно не доконца опять непрочитал или неврубился, ну или такого неделал. Короч если невъежаешь то непиши Добавлено @ 18:01 Уточню именно в чем проблема например путь
Сначала добавляю в дерево папку HKEY_CLASSES_ROOT потом подпапки HKEY_CLASSES_ROOT, а потом что-бы к .ad добавить OpenWithList надо все перебирать иначе невижу вариантов как найти папку в дереве .ad куда добавить далше по дереву и этот процесс очень много времени занимает если две папки открыты например
то половины минуты |
| Автор: Ak47black 3.5.2007, 18:41 | ||
Ну во нарисую![]() Значит делаю так разбил строку
на массив из элементов(или уровней на картинке) HKEY_CLASSES_ROOT, .ad, OpenWithList беру первый элемент, добовляю в TTreeView и запомянаю его, запрашиваю его дочерние папки, довляю эти дочерние папки как дочернии, перебираю все дочернии нахожу с именем .ad и запрашиваю по этому пкти дочернии папки, добовляю дочернии ишю OpenWithList и т.д. Так понятно, ну незнаю просто такая проблема что трудно объяснить саму суть. Вот и этото процесс перебирания меня не устраивает, потому что очень много времени занимает. |
| Автор: _hunter 3.5.2007, 18:58 |
| а зачем ты этим перебирательством занимаешся? заполняй детей пока они есть, как кончились -- поднимайся на уровень выше... т.е.: запросил всех детей корня, добавил первого, запросил всех его детей, запросил все детей ребенка, тут детей нету -- запрашивай всех детей второго узла корня (все это естественно рекурсивно) |
| Автор: MetalFan 3.5.2007, 19:30 |
| извини конечн... но из-за ошибок(опечаток?) и построения предложений даже после 3го прочтения не понял, в чем проблема. |
| Автор: Ak47black 3.5.2007, 19:37 |
| Извиняюсь за то что несмог описать проблему, просто трудно описать. Народ еше раз Sorry Шас посмотрю как-бы тут лучше объяснить. |
| Автор: Ak47black 3.5.2007, 20:39 |
| Дано: 1.TtreeView в котором отображаеться дерево папок из реестра. 2.Массив из строк OpenedFolders, каждая строка представляет путь открытой папки из TtreeView , уточню – открытой папкой я сшитаю ту попку которая находитьяся не на самом последнем уровне ,а на предпоследнем относительно своих дочерних. Например: HKEY_CLASSES_ROOT\CrystalReports102.DTSConnection.0\CLSID тоесть CLSID будет иметь один уровень дочених. Цель: Построить такое-же дерево папок рееста с учетом того что эти в реестре произошли какието изменения.(Refresh) Мой тот способ плохо работает, как предлогаете сделать? _hunter, говорит похожий способ что и я, так вот чем он плох Например возмем HKEY_CLASSES_ROOT\CrystalReports102.DTSConnection.0\CLSID Делаем рекурсию Сначала запрашиваем ‘детей’ Очень надеюсь что в это раз понятно написал |
| Автор: MetalFan 3.5.2007, 20:58 |
| а ты видел, как системный диалог выбора папки работает... что-то типа того: 1) "строишь" дерево сразу до необходимого узла без "лишних" детей. 2) В фоновом режиме подгружаешь "недостающих" детишек |
| Автор: Ak47black 3.5.2007, 21:05 |
| Ну чтото такое я вчера придумал сам, но тут другая проблема появляеться. Порядок отображения A-Z меняеться, а что-бы его пересортировать нужен опять перебор) получаеться та-же проблема. Опять новые дубинки |
| Автор: MetalFan 3.5.2007, 21:43 |
| да не особо то и интересная. просто пораскинуть мозгами. зачем сортировать после подгрузки всех детей, если можно подгрузить их так, чтобы уже все было отсортировано.... |
| Автор: _hunter 4.5.2007, 11:31 |
| без полного перескана реестра ты и так не узнаеш где у тебя изменения произошли... а если делается полный перескан -- то и дерево строй заново. или ты на уведомления об изменениях подписался? тогда храни рядом с хендлом папки жендл узла своего дерева. |