Модераторы: Vitalik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы с SynUniHighlighter 
:(
    Опции темы
x_art
Дата 24.1.2008, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Очень часто при закрытии формы с редактором вылетает ошибка Access violation at address ....
Стек вызова всегда один и тот же. Никто не подскажет в чем может быть причина?


|00555086|cncsyn.exe|SynUniClasses.pas    |TSynMultiToken      |Clear            |677 |
|00555080|cncsyn.exe|SynUniClasses.pas    |TSynMultiToken      |Clear            |676 |
|005571E3|cncsyn.exe|SynUniRules.pas      |TSynRange           |Clear            |1283|
|00557235|cncsyn.exe|SynUniRules.pas      |TSynRange           |Clear            |1291|
|005571D8|cncsyn.exe|SynUniRules.pas      |TSynRange           |Clear            |1282|
|0055651F|cncsyn.exe|SynUniRules.pas      |TSynRange           |Destroy          |668 |
|0054F8A8|cncsyn.exe|SynUniHighlighter.pas|TSynUniSyn          |Destroy          |173 |
|00428F6D|cncsyn.exe|Classes.pas          |TComponent          |DestroyComponents|9853|
|00428F24|cncsyn.exe|Classes.pas          |TComponent          |DestroyComponents|9844|

PM MAIL   Вверх
mr.Anderson
Дата 25.1.2008, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



x_art, у меня тоже такое было. ОЧЕНЬ внимательно проверь, не совершается ли каких-нибудь неправильных действий с SynEdit'ом (ну или с SynMemo, в зависимости от того, что ты используешь). Здесь виноват именно он, а не SynUniHighlighter. Ищи где-то неправомерные действия. Они происходят, скажем, в середине программы, а проявляют себя только при закрытии. Найти сложно, но нужно.

P.S. Для тестирования попробуй создать чистое приложение, запихать туда SynEdit и SynUniHighlighter, а потом запустить и закрыть программу. Более чем вероятно, что AV ты не получишь, а значит, проблема именно где-то в твоем коде, и скорее всего, коде, относящемся к SynEdit'у.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
x_art
Дата 27.1.2008, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



В том то и дело, у что у меня этот баг не вылезает никогда, а вот пользователи раз в неделю жалуются. А что считается неправомерными действиями?
PM MAIL   Вверх
mr.Anderson
Дата 27.1.2008, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



x_art, это я так образно назвал всякие неточности в обращении с памятью, типа обращения к свойствам SynEdit'а, который еще не был создан, создание дочерней формы, где находится SynEdit, которая не находится ни под чьим контролем, и т.п.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
x_art
Дата 27.1.2008, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Если обратиться к свойствам несуществующего SynEdit, то AV будет сразу.

>>создание дочерней формы, где находится SynEdit, которая не находится ни под чьим контролем

а вот это не совсем понял. поясни пожалуйста. 
PM MAIL   Вверх
mr.Anderson
Дата 27.1.2008, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


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

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



Например. Есть дочерняя форма. На ней лежит SynEdit. То есть ты его в design-time закинул на форму.

Потом ты хочешь эту форму вызвать. Скажем, по клику на кнопке. И если ты вызовешь его вот так:
Код

procedure ...
var
 Form2 : TForm2;
begin
 Form2 := TForm2.Create( nil );
 Form2.Show(); //или ShowModal()
end;

То велика вероятность получения AV в самый неожиданный момент. У меня он вылазил сразу после закрытия этой самой дочерней формы. Проблема решилась исправлением вышеуказанного фрагмента на такой:
Код

procedure ...
var
 Form2 : TForm2;
begin
 Form2 := TForm2.Create( Application );
 Form2.Show(); //или ShowModal()
end;

Но вообще, отлов AV в случае работы с SynEdit'ом очень сложен, я сам до сих пор отлавливаю их по всем углам в своей программе, где используется SynEdit.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | SynUniHighlighter и SynEdit | Следующая тема »


 




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


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

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