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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Использование компонента shelltreeview, приводит к ошибкам 
:(
    Опции темы
Alexzz
Дата 26.9.2007, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 9.4.2007
Где: Латвия

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



ShellTreeView
Хороший, стильный компонент. Можно очень наглядно и удобно организовать просмотр файлов. Но вот столкнулся с проблемой - работа с компонентом приводит к ошибкам. Ошибки самые различные, в разные моменты разные.
Сначала о том, как я использую компонент.
Свойство Root установлено в rtMyComputer. В свойстве ObjectTypes включены otFolders и otNonFolders. Другие свойства изначально не менялись. При пуске программы, по событию form.OnCreate читается ini файл и оттуда читается стринг, прежде сохранённое значение свойства ShellTreeView.path и соответственно в это свойство и направляется. Работа программы организована через событие ShellTreeView.OnChange. По каждому событию считывается свойство ShellTreeView.path, определяется файл это или нет, файл читается и анализируется.
Первый трабл возник при работе с папкой, содержащей около 40 файлов с именами по 30-50 символов. Глюк заключался в следующем: Перебирая файлы сверху вниз на одном файле программа вдруг вылетала с ошибкой и закрывалась. Какая ошибка, я к сожалению не запомнил. Поначалу я думал, что виноват именно этот файл, менял его атрибуты, переименовывал его, но ошибка всегда возникала именно на этом файле. Все файлы выше и ниже программа легко открывала, а стоило кликнуть на этот файл как программа вылетала. Затем я этот файл удалил. И ошибка стала возникать на следующем файле, который встал в списке на место удалённого.
Потом я на время отключил работу с ini файлом и проблема вроде исчезла. Но потом возникла другая - если хоть раз открыть в окне компонента папку содержащую более 500 файлов, то программу больше невозможно нормально закрыть. При закрытии она вываливается в ошибку. Проверено, ошибка точно зависит от работы с ShellTreeView. Если не открывать ни одной большой папки, то всё нормально. Если хоть раз хоть одну большую папку открыть, при закрытии программы она стабильно вываливается в ошибку.
Если в большой папке перебирать файлы один за другим, то в определённый момент программа вываливается в ошибку.
Иногда, если выбрав один файл некоторое время работать с программой а потом вернуться в окно ShellTreeView, то в нём больше не появляется инверсная строка показывающая текущий файл, индикатор системных ресурсов, установленный в трей, показывает резкий скачок загрузки процессора, и через секунд 5 программа вылетает с ошибкой.

У меня складывается впечатление, что под какие-то данные компонента выделяется слишком мало места и они при работе затирают другие данные в памяти, а так-же другие данные могут затереть данные ShellTreeView. Ясно, что изначально невозможно предугадать с какими папками компоненту прийдётся работать, но ведь под любой объём данных должно автоматически выделяться место, или я не прав? А может я чего-то в начале не указал, чтобы так происходило?

Вобщем нужен совет опытных программистов. Я в тупике.
PM WWW ICQ MSN   Вверх
Sanchezzz
  Дата 26.9.2007, 22:07 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



ShellTreeView это убого базовый TreeView. Лучше все делать самому ручками и для этих целий virtualtreeview уж точно не загнется в поставки с ним идет демы. там есть пример дерева каталогов  до вольно быстро работает.... + ко все сему тут есть отличные статьи на форумы о нем в помощь в освоении..


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
BaD_SeCt0R
Дата 26.9.2007, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lazy Coder
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 9.10.2006
Где: Анапа

Репутация: нет
Всего: 18



Alexzz, как ни проверял, даже открывал папку с количеством файлов почти равным 5000. Да, работает жутко медленно, но никаких ошибок не обнаружил. Может дело у тебя в коде? Потоки используешь?

PS У меня D7.


--------------------
Кто владеет информацией - владеет миром. (С) Френсис Бэкон.
PM MAIL ICQ   Вверх
Alexeis
Дата 26.9.2007, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 34
Всего: 459



Цитата(BaD_SeCt0R @  26.9.2007,  22:32 Найти цитируемый пост)
Alexzz, как ни проверял, даже открывал папку с количеством файлов почти равным 5000. Да, работает жутко медленно, но никаких ошибок не обнаружил. 

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


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Alexzz
Дата 29.9.2007, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 9.4.2007
Где: Латвия

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



Да, но в чём именно? Всё взаимодействие я уже описал. Всё что я делаю, это считываю свойство path. Я тут одно время думал, что проблема связана с сохранением path в ини-файл и восстановлении его при следующем запуске. Но теперь я даже это убрал. Трабл всё равно существует. Ничего не понимаю!  smile

Добавлено @ 17:09
Цитата(Sanchezzz @ 26.9.2007,  22:07)
ShellTreeView это убого базовый TreeView. Лучше все делать самому ручками и для этих целий virtualtreeview уж точно не загнется в поставки с ним идет демы. там есть пример дерева каталогов  до вольно быстро работает.... + ко все сему тут есть отличные статьи на форумы о нем в помощь в освоении..

Поподробнее пожалуйста, это есть в папках дельфи? В какой именно папке лежит эта демка? В списке компонентов у меня нету virtualTreeView. У меня 7 ентерпрайз.

Это сообщение отредактировал(а) Alexzz - 29.9.2007, 17:10
PM WWW ICQ MSN   Вверх
BaD_SeCt0R
Дата 29.9.2007, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lazy Coder
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 9.10.2006
Где: Анапа

Репутация: нет
Всего: 18



А что в path? Может там у тебя значение инвалидное?


--------------------
Кто владеет информацией - владеет миром. (С) Френсис Бэкон.
PM MAIL ICQ   Вверх
Alexzz
Дата 29.9.2007, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 9.4.2007
Где: Латвия

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



Цитата(BaD_SeCt0R @ 29.9.2007,  17:10)
А что в path? Может там у тебя значение инвалидное?

Дык я туда ничего не пишу больше. Только читаю. И из полученной от туда строки нормально извлекается имя файла и путь к нему.
PM WWW ICQ MSN   Вверх
BaD_SeCt0R
Дата 29.9.2007, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lazy Coder
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 9.10.2006
Где: Анапа

Репутация: нет
Всего: 18



Alexzz, если делать все так, как ты говоришь, то все работает. Может ты все-таки выложишь твой код работы с ShellTreeView, а то догадываться, что у тебя не так, довольно сложно.


--------------------
Кто владеет информацией - владеет миром. (С) Френсис Бэкон.
PM MAIL ICQ   Вверх
Alexeis
Дата 29.9.2007, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 34
Всего: 459



Цитата(Alexzz @  29.9.2007,  16:54 Найти цитируемый пост)
Поподробнее пожалуйста, это есть в папках дельфи? В какой именно папке лежит эта демка? В списке компонентов у меня нету virtualTreeView. У меня 7 ентерпрайз.

  Это сторонний компонент тут в общих можно поискать есть подробное описание и все нужные ссылки.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Alexzz
Дата 30.9.2007, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 9.4.2007
Где: Латвия

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



Проблему победил.

Создал новый проект, нанёс на форму все те-же компоненты, расположил их так-же, и скопировал все процедуры обработки событий. Вобщем сделал всё то-же самое что и было, но с нуля. И проблема исчезла!
Значит это был какой-то глюк самого дельфи.
PM WWW ICQ MSN   Вверх
MetalFan
Дата 30.9.2007, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Alexzz @  30.9.2007,  11:04 Найти цитируемый пост)
И проблема исчезла!

скорее всего не исчезла, а спряталась до лучших времен ;)


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


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 9.4.2007
Где: Латвия

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



Цитата(MetalFan @ 30.9.2007,  11:15)
скорее всего не исчезла, а спряталась до лучших времен ;)

Спасибо за заряд оптимизма! smile

Но я всё-же надеюсь что исчезла.
Только что опробовал программу на самых разных папках с самыми разными файлами и проблемы не возникло.
PM WWW ICQ MSN   Вверх
Snowy
Дата 1.10.2007, 11:43 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 31
Всего: 484



Вообще компонентик убогий.
Написан левой ногой и приводит к хорошим утечкам памяти.
Уже из-за этого его не стоит использовать...
PM MAIL   Вверх
Alexzz
Дата 6.10.2007, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 9.4.2007
Где: Латвия

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



Ну,... уже использовал. Вроде пока работает. 
Возник новый вопрос.
Начал работать с прогой на стареньком компике у которого есть 3.5'' дисковод. Дело в том, что при каждом запуске проги этот шелтривью опрашивает все имеющиеся в системе накопители, в том числе и дисковод. И вот это действие сильно действует на нервы. Во первых это большая задержка, во вторых он начинает гонять головку дисковода взад-вперёд несколько раз туды-сюды, при этом возникает соответствующий бесящий меня звук.
Вопрос: Можно ли каким-то образом запретить компоненту опрашивать дисковод при запуске? В крайнем случае сказать ему, что нету никаких дисководов в системе...
PM WWW ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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