Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2015.09.10;
Скачать: CL | DM;

Вниз

Access violation   Найти похожие ветки 

 
Alexs   (2012-03-05 11:43) [0]

есть некая программа после выполнения определенных действий вылетает
Access violetion at address 0040602A in module sm.exe read of address ffffffc4.
через отладчик выхожу вот на эту строку кода
@@haveVMT:
       MOV     EDI,[EDX].vmtDynamicTable
это System.pas самого delphi XE2 как выйти на строку кода в самой программе?
в программе создается много компонентов но все они удаляются таким вот образом
for i := 0 to pScrollBox.ControlCount - 1 do
 begin
   pScrollBox.Controls[0].Free;
 end; // for
destroy ничего не меняет


 
CRLF   (2012-03-05 12:14) [1]

for i := Pred(pScrollBox.ControlCount) downto 0 do
begin
  pScrollBox.Controls[i].Free;
end;


 
Dimka Maslov ©   (2012-03-05 12:30) [2]

1. Есть такая замечательная весчь - называет Call Stack. Показывает (по мере сил, конечно) всю последовательность вызовов подпрограмм, приведшую к текущему месту.

2. Если контрол был добавлен через InsertControl или через присвоение Parent, то он будет удалён вместе со всеми. Отдельно удалять его не надо.


 
Ega23 ©   (2012-03-06 13:59) [3]


> в программе создается много компонентов но все они удаляются
> таким вот образом
> for i := 0 to pScrollBox.ControlCount - 1 do


Во-первых, конкретную ошибку тебе уже показали [1]
Во-вторых, если компоненты правильно создавать, то и убивать их самому не надо будет, у них механизм самоликвидацией через Owner заложен.
Ты же не пишешь деструктор формы, хотя накидываешь на неё в design-time кучу контролов.


 
Ega23 ©   (2012-03-06 15:07) [4]


> Во-первых, конкретную ошибку тебе уже показали [1]


Тут вот товарищи поправили, а я и проглядел.
Ошибки-то у автора нет, он нулевой элемент удаляет. Это не оптимально, т.к. ненужный Move много раз делается, но не ошибка.

Мне кажется, что это из-за Controls, а не Components. Надо код создания смотреть.


 
Dimka Maslov ©   (2012-03-06 17:17) [5]

По моему уничтожает объекты всё-такие Оwner, a не Parent. Вот у нас и получается, что Parent прибил их "таким вот образом ", а потом Owner пытается сделать это ещё раз в собственном деструкторе


 
Anatoly Podgoretsky ©   (2012-03-06 17:47) [6]

> Dimka Maslov  (06.03.2012 17:17:05)  [5]

Визуальные контролы убиваются по parent, они могут не иметь собственника.
Проблемы с удалением по Owner нет, при убиение по Controls он убирается
также и из списка Сomponents


 
Ega23 ©   (2012-03-11 13:36) [7]


> По моему уничтожает объекты всё-такие Оwner, a не Parent.
>  Вот у нас и получается, что Parent прибил их "таким вот
> образом ", а потом Owner пытается сделать это ещё раз в
> собственном деструкторе


Чё гадать-то, загляни в код.



Страницы: 1 вся ветка

Текущий архив: 2015.09.10;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.134 c
2-1393852098
XCoder
2014-03-03 17:08
2015.09.10
ком-сервер


2-1394848571
Artem
2014-03-15 05:56
2015.09.10
Разделить текст по столбцам


3-1304500823
Atum
2011-05-04 13:20
2015.09.10
Сделать запись в поле CLOB


15-1412333277
Jeer
2014-10-03 14:47
2015.09.10
Лучшие книги 21-го века


11-1259595878
Владимир131313
2009-11-30 18:44
2015.09.10
KOL Memo LoadfromFile