Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
14-25020
Ketmar
2002-12-19 12:37
2003.01.09
господа, никто не встречал реализацию LISP а на OP?


4-25143
chips
2002-11-21 12:52
2003.01.09
handle controlов в чужой программе


1-24954
Ser12
2002-12-25 14:29
2003.01.09
Люди, кто знает функцию, которая возвращает количество


14-25019
Delirium
2002-12-19 16:32
2003.01.09
Download DevExpress QuantumGrid 4.0 For Delphi 7


4-25131
Comwad
2002-11-20 08:48
2003.01.09
Узнать объем памяти, который занимает процесс.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский