Форум: "Основная";
Текущий архив: 2003.01.09;
Скачать: [xml.tar.bz2];
ВнизAccessViolation - на ровном месте. Помогите, кто знает! Найти похожие ветки
← →
Паша (2002-12-25 14:49) [0]Программа размером 5 метров. На TBotton цепляю менюшку, через которую захожу в форму настроек: TPageControl и куча Editov и т.п. (порядка 200). По выходу форме делаю Free. После нескольких входов-выходов в эту форму, при очередном нажатии мышкой на Botton вылетает AV. В отладчике видно, что это происходит в
Controls.pas -> GetCaptureControl, вызов из
procedure TWinControl.WndProc
.............
строка 5674
WM_CANCELMODE:
if (GetCapture = Handle) and (CaptureControl <> nil) and
..........
видать, какие-то мышиные дела.
Как с этим можно бороться?
← →
Переяслов Григорий (2002-12-25 15:41) [1]Скорее всего, не мышинные, а память (потери, захват и не отдача, запись в системную область и т.д.). Причем ошибка может быть в совсем другом месте программы. У меня еще в DOSе выдавалась ошибка на процедуре SetColor (установка цвета). Возможна ошибка в сторонних компонентах. Проблема ищется зачастую долго и трудно. Успехов!
← →
Паша (2002-12-25 16:56) [2]Переяслов Григорий © (25.12.02 15:41)
Спасибо!
>Проблема ищется зачастую долго и трудно.
Однако, оптимизма не добавляет. Я с этой заразой очеень долго борюсь, правда с перерывами, но судя по затраченным усидиям, вот-вот должно что-то произойти.
Насчет памяти проверял (MemProof-ом) - потерь вроде нет, из сторонних компонент InfoPower 3000, там, конечно, сложно сказать, что происходит. Но память освобождается полностью, если выйти из программы.
← →
Polevi (2002-12-25 17:01) [3]плохо дело, такое сложно найти, если через раз глючит
← →
Top Gun (2002-12-25 17:08) [4]>На TBotton цепляю менюшку, через которую захожу в форму настроек
Это как ?
>Editov и т.п. ( порядка 200).
?! Это что же за форма на которой 200 эдитов ?
← →
yuri_1 (2002-12-25 17:28) [5]Может ресурсы кончаются?
И кстати нет ли на форме RX.. всяких едитов
← →
Переяслов Григорий (2002-12-25 17:34) [6]У моего напарника была проблема со сторонним компонентом, там была какая-то сумасшедшая запись, которая в одном из режимов не инициализировалось. Эффекты были прелюбопытные. В определенной ситуации возникает глюк. Меняешь положенние пункта меню (кладешь его в другое подменю), глюк исчезает. Вот такие бывают случаи.
← →
Паша (2002-12-25 17:44) [7]Top Gun (25.12.02 17:08)
Пардон, на TButton:
procedure TFormSclad.ButtonClick(Sender: TObject);
begin
Menu1.Popup(Left+5,top+Height-Button.Height-20*Menu1.Items.Count);
end;
Собственно, это не существенно (для отладки, и конечном варианте работает не так, просто здесь этот глюк хорошо проявляется, у клиентов этого нет). Ну не эдитов, а, скажем наследников TWinControl (разных 182шт.), среди которых и эдиты в т.ч., нужна эта лабуда для настройки под конкретного пользователя.
← →
Переяслов Григорий (2002-12-25 17:48) [8]А то, что у тебя глюк есть, а у клиентов нет - это подтверждает версию с памятью. Другое распределение, и ситуация меняется.
← →
Lady D (2002-12-25 17:49) [9]
> выходу форме делаю Free.
FreeAndNil();
Ресурсы GDI
← →
yuri_1 (2002-12-25 18:04) [10]Я про rx не зря сказал,
там у них есть большой глюк (AV) с созданием контролов где используется rxspeedbutton (а это почти везде) динамически.
← →
Паша (2002-12-25 18:05) [11]yuri_1 © (25.12.02 17:28)
Таки есть: TRxLabel, TDateEdit, TRxCalcEdit. А что, они на ресурсы критичные? Индикатор ресурсов больших потерь не показывает.
Переяслов Григорий © (25.12.02 17:34)
Да... Тогда мне надо вообще удалить эту форму и пусть ручками в ini-файле пишут.
← →
Паша (2002-12-25 18:11) [12]yuri_1 © (25.12.02 18:04)
АГАА! Счас порою их исходники, что-то давно я туда не заглядывал
Lady D © (25.12.02 17:49)
>FreeAndNil() - такого в D4 нет в природе, появилось позже.
← →
yuri_1 (2002-12-25 18:12) [13]Нет там просто есть ошибка (я ее не смог найти, она довольно плавающая). возникает AV,
_но_ у меня возникала 100% когда я динамически переключал эти котролы из одной формы в другую.
(у меня на одной форме набор TTabSheet и я их переключал в PageControl на другой форме)
В результате отказался от rxlib в данном случае
← →
Паша (2002-12-25 18:33) [14]yuri_1 © (25.12.02 18:12)
Убил все Rx-компоненты (для чистоты експеримента). Абидна, да! Вид сбоку. Но все равно спасибо, буду иметь ввиду.
← →
Паша (2002-12-25 19:08) [15]Вот чуяло мое сердце! Лежит у меня ToolBar на нем ToolButton с прицепленной Action, и если давить на ToolButton мышкой, то лезет AV на 2-3й раз, а если по горячей клавише закрывать форму- пальцы устали, и все работает. Мда... Буду дальше завтра смотреть.
← →
Паша (2002-12-27 13:48) [16]Вот наконец разобрался, кому интересно. Таки это мышиные дела в связке с ToolButton-ом. В некоторой ситуации в переменной CaptureControl(Controls.pas стр.1649) остается ссылка на ToolButton, который уже удалился вместе с формой. При вызове функции GetCaptureControl получаем AV! Т.е. ToolBar-ром лучше не пользоваться при перегруженных формах, или принудительно вызывать
procedure TForm1.FormDestroy(Sender: TObject);
begin
SetCaptureControl(nil);
end;
и можно спокойно мышить мышью дальше.
Спасибо за поддержку!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.01.09;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.007 c