|
Модераторы: Snowy, MetalFan, bems, Poseidon |
|
Dom |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 121 Регистрация: 7.8.2005 Репутация: 3 Всего: 4 |
Первый опыт по использованию собственного редактора данных в VST. Реализовал на основе всем известного примера от Quadr0 редактор TEdit в VirtualStringView. Все работает, за небольшим исключением - если фокус на Edit'e и нажимаем Esc или Enter, то выдается AV. Не могу глазами найти или понять в чем загвоздка. Обработчик события OnKeyDown отрабатывает нормально, но при выходе из него (на строке 107 жмем Ф7 например) возникает ошибка доступа.
Отличия от оригинального примера. Дополнительно в OnKeyPress проверяется введенный символ, чтобы можно было вводить только числа или удалять их Backspace'ом. Также при окончании редактирования идет проверка, что введенное значение в поле является числом. Но эти процедуры никак не влияют на возникновение AV. Если их отключить все остается на своих местах. Подскажите, пожалуйста, в чем тут дело и как исправить. Прилагаю файл проекта и дублирую его код ниже (возможно и проект запускать не потребуется). ЗЫ. Нашел в инете на делфикиндом совершенно аналогичную тему, но там так и не ответили на вопрос в чем может быть проблема.
Это сообщение отредактировал(а) Dom - 22.1.2009, 06:26 Присоединённый файл ( Кол-во скачиваний: 44 ) VST_editor.rar 12,41 Kb |
|||
|
||||
Rrader |
|
|||
Inspired =) Профиль Группа: Экс. модератор Сообщений: 1535 Регистрация: 7.5.2005 Репутация: 18 Всего: 191 |
См. аттач
Это сообщение отредактировал(а) Rrader - 22.1.2009, 13:33 Присоединённый файл ( Кол-во скачиваний: 123 ) Editor.rar 9,46 Kb |
|||
|
||||
Dom |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 121 Регистрация: 7.8.2005 Репутация: 3 Всего: 4 |
Rrader, сильно и красиво!
Благодарю! Вопрос решен, все работает отлично, но хотелось бы знать в чем была ошибка-то в моем варианте кода? А то ж в следующий раз снова где-то наткнусь на нее. Хотя бы в двух словах если можно. Сам пока въехать не могу, но поколдую еще. |
|||
|
||||
Bose |
|
||||
Эксперт Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 8 Всего: 51 |
Забавно. Пробовал повторить в Delphi 2009 с последней версией VST - не получилось. Но когда-то у меня была похожая ошибка. Решалась заменой
на
Причина же была в том, что во после отрабатывания события OnKeyDown, сейчас уже не помню кто именно, но кто что-то пытался сделать с Edit-ом. А Edit к тому моменту уже был то ли спрятан, то ли уничтожен. Деталей сейчас к сожалению не помню. =( Скомпилируй программу с Use Debug Units, и после возникновения исключения посмотри стек вызовов(Ctrl+Alt+S). |
||||
|
|||||
Rrader |
|
||||
Inspired =) Профиль Группа: Экс. модератор Сообщений: 1535 Регистрация: 7.5.2005 Репутация: 18 Всего: 191 |
Добавлено через 3 минуты Bose, у меня ошибка только в D7 вываливается. Понять причину пока не смог, но вываливается здесь:
|
||||
|
|||||
Dom |
|
||||
Шустрый Профиль Группа: Участник Сообщений: 121 Регистрация: 7.8.2005 Репутация: 3 Всего: 4 |
Да, забыл сразу сказать что у меня D7.
Bose, скомпилил с использованием дцушек. Ошибка вываливается в процедуре в последней строке.
При вызове стека там такая информация содержится.
Для меня это, честно говоря, малоинформативно пока что. Может у вас будут какие-то соображения? Rrader, точно. Закомментировать эту строку и все работает. Проблемы при разрушении редактора. Но все равно не понятно. Чувствую не разобраться мне, знаний не хватает. Ладно, будем считать это "багом/фичей" Делфи7. |
||||
|
|||||
Правила форума "Delphi: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |