Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с реестор в Windows, Нужно генеальное решение :) 
V
    Опции темы
Ak47black
Дата 3.5.2007, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: 1
Всего: 0



Здраствуйте, врятли кто ответит на этот вопрос ,но всетаки попытаютаюсь объяснить проблему.

Что я пытаюсь сделать:
    Пытаюсь сделать дерево папок(TTreeView) на такое-же как в самой проге RegEdit.exe (при этом это дерево будет отображаться на удаленном компе, но этот момент неоноситься к проблеме), вообшем делаю дерево и заполняю его структуру по мере продвижения по папкам.
Тоесть когда юзер нажимает на крестик что-бы просмореть подпапки, то в этот момент прога получает подпапки и отоброжает их.

Проблема:
     Например юзер открыл(пролез по какомо-ту количеству папок) и сделал какие-то изменения и заходет обновить папки и вот тут возникает следушая проблема - некоторые папки например 
Цитата

HKEY_CLASSES_ROOT

Имеют очень большое количество подпапок. Тоесть если у меня есть массив строк в которых храняться рути открытых папок, но по ним я немогу выстроить дерево потому-что если брать эту задачю перебором то занимает нууу очень много времени. 
PM MAIL   Вверх
_hunter
Дата 3.5.2007, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



что-то проблемы совсем не увидел...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Ak47black
Дата 3.5.2007, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: 1
Всего: 0



Цитата

что-то проблемы совсем не увидел... 

Так ты наверно не доконца опять непрочитал или неврубился, ну или такого неделал. Короч если невъежаешь то непиши smile

Добавлено @ 18:01
Уточню именно в чем проблема например путь
Цитата

HKEY_CLASSES_ROOT\.ad\OpenWithList

Сначала добавляю в дерево папку HKEY_CLASSES_ROOT
потом подпапки HKEY_CLASSES_ROOT, а потом что-бы к .ad добавить OpenWithList надо все перебирать иначе невижу вариантов как найти папку в дереве .ad куда добавить далше по дереву и этот процесс очень много времени занимает если две папки открыты например 
Цитата

HKEY_CLASSES_ROOT\.accdt\ShellEx
HKEY_CLASSES_ROOT\.ad\OpenWithList

то половины минуты

Это сообщение отредактировал(а) Ak47black - 3.5.2007, 18:02
PM MAIL   Вверх
_hunter
Дата 3.5.2007, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



зачем все перебирать? ты добавляеш к папке ".ad" значит у тебя есть ее хендл/указатель вот к этой папке и добавляй...

Добавлено через 1 минуту и 1 секунду
Цитата(Ak47black @  3.5.2007,  17:57 Найти цитируемый пост)
Так ты наверно не доконца опять непрочитал или неврубился, ну или такого неделал.

или (что более вероятно) ты так объяснил...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Ak47black
Дата 3.5.2007, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: 1
Всего: 0



Ну во нарисую
user posted image
Значит делаю так 
разбил строку 
Цитата

HKEY_CLASSES_ROOT\.ad\OpenWithList

на массив из элементов(или уровней на картинке) HKEY_CLASSES_ROOT, .ad, OpenWithList
беру первый элемент, добовляю в TTreeView и запомянаю его, запрашиваю его дочерние папки, довляю эти дочерние папки как дочернии,
перебираю все дочернии нахожу с именем .ad и запрашиваю по этому пкти дочернии папки, добовляю дочернии ишю OpenWithList и т.д.
Так понятно, ну незнаю просто такая проблема что трудно объяснить саму суть.  smile 
Вот и этото процесс перебирания меня не устраивает, потому что очень много времени занимает.

Это сообщение отредактировал(а) Ak47black - 3.5.2007, 18:42
PM MAIL   Вверх
_hunter
Дата 3.5.2007, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



а зачем ты этим перебирательством занимаешся? заполняй детей пока они есть, как кончились -- поднимайся на уровень выше...
т.е.:
запросил всех детей корня, добавил первого, запросил всех его детей, запросил все детей ребенка, тут детей нету -- запрашивай всех детей второго узла корня (все это естественно рекурсивно)


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
MetalFan
Дата 3.5.2007, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



извини конечн... но из-за ошибок(опечаток?) и построения предложений даже после 3го прочтения не понял, в чем проблема.


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Ak47black
Дата 3.5.2007, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: 1
Всего: 0



Извиняюсь за то что несмог описать проблему, просто трудно описать. Народ еше раз Sorry 
Шас посмотрю как-бы тут лучше объяснить.

PM MAIL   Вверх
Ak47black
Дата 3.5.2007, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 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 
Делаем рекурсию
Сначала запрашиваем ‘детей’ smile HKEY_CLASSES_ROOT, получаем список детей, приклеиваем как Child к HKEY_CLASSES_ROOT ну а потом перебором ишем в этих детях, детя по имени CrystalReports102.DTSConnection.0 что-бы к нему детей приклеить от CLSID, ато никак или я нетак понял. Так вот когда по большому количеству детей ишем то это очень много времени занимает, особенно когда дети TTreeNode.


Очень надеюсь что в это раз понятно написал smile.


Это сообщение отредактировал(а) Ak47black - 3.5.2007, 20:48
PM MAIL   Вверх
MetalFan
Дата 3.5.2007, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



а ты видел, как системный диалог выбора папки работает...
что-то типа того:
1) "строишь" дерево сразу до необходимого узла без "лишних" детей.
2) В фоновом режиме подгружаешь "недостающих" детишек


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Ak47black
Дата 3.5.2007, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2205
Регистрация: 2.12.2005

Репутация: 1
Всего: 0



Ну чтото такое я вчера придумал сам, но тут другая проблема появляеться.
Порядок отображения A-Z меняеться, а что-бы его пересортировать нужен опять перебор) получаеться та-же проблема.
Опять новые дубинки  smile .
  smile мда интересная проблема.

Это сообщение отредактировал(а) Ak47black - 3.5.2007, 21:07
PM MAIL   Вверх
MetalFan
Дата 3.5.2007, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



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


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
_hunter
Дата 4.5.2007, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



без полного перескана реестра ты и так не узнаеш где у тебя изменения произошли... а если делается полный перескан -- то и дерево строй заново.
или ты на уведомления об изменениях подписался? тогда храни рядом с хендлом папки жендл узла своего дерева.


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0508 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.