Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Создание и удаление компонентов в run-time [D5, Win95/98]


Lamerr_ ©   (2002-11-08 13:40:00) 

Доброе время суток.
Код:
for i:=0 to 10 do
begin
rgAxis[i]:=TRadioGroup.Create(nil);
with rgAxis[i] do
begin
Parent:=sbAxis;{ScrollBox}
Visible:=True;
Tag:=i;
OnClick := GBClick;
end;
end;
создает массивчик RadioGroup, который потом нужно уничтожить:
for i:=0 to 10 do rgAxis[i].Free;
При попытке уничтожить получаю сообщение Access violation...

Что сделал не правлильно?
Помогите, пожалуйста.


Александр Спелицин   (2002-11-08 17:24:00) [1]

http://www.delphikingdom.com/helloworld/runtime_comp.htm


Игорь Шевченко   (2002-11-08 14:18:00) [2]


> SetLength(rgAxis,10){то, что касается инициализации}


SetLength(rgAxis,11)


Lamerr_   (2002-11-08 14:15:00) [3]

2 Ihor Osov"yak © (08.11.02 14:06)
SetLength(rgAxis,10){то, что касается инициализации}
А обработчик срабатывает тольк раз. Проверял точками останова.


Ihor Osov'yak   (2002-11-08 14:06:00) [4]

2 Lamerr_ © (08.11.02 13:59)

Интересно было бы взглянуть на код инициализации глобального дин массива.

Во вторых, Вы уверенны, что обработчик в силу каких-то непонятных причин не срабатывает два раза?

На тот случай, а лучше всегда, делать примерно так:



for i:=0 to 10 do begin
if assigned(rgAxis[i]) then begin
rgAxis[i].Free;
rgAxis[i]:=nil;
end;

end;

естественно, в коде инициализации масива загнать в него nil.



Lamerr_   (2002-11-08 13:59:00) [5]

rgAxis[i] - динамический массив, места там есть.
Уничтожение делаю в обработчике события кнопки.


Ihor Osov'yak   (2002-11-08 13:52:00) [6]

непонятно, что за зверь rgAxis; как создан, отведены ли там места этих одинадцать экземпляров. Непонятно, также где Вы делаете уничтожение.

Также, почему бы не делать rgAxis[i]:=TRadioGroup.Create(self);
и не заботится об уничтожении (я исхожу из того, что код этод -
метод формы или фрейма).


Lamerr_   (2002-11-08 13:52:00) [7]

rgAxis - глобальная переменная


TTCustomDelphiMaster   (2002-11-08 13:49:00) [8]

rgAxis - глобальная переменная?


Наверх

Титульная страница Поиск, карта сайта Написать письмо