Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.02.04;
Скачать: [xml.tar.bz2];

Вниз

Динамические объекты   Найти похожие ветки 

 
Digitman   (2002-01-15 11:50) [18]

Где у тебя код инициализации глобального массива ButtonArray ?
Перед первым использованием все его элементы д.б. сброшены в nil.

AV возникает у тебя при выполнении строчки

if Assigned(ButtonArray[i]) then ButtonArray[i].Free;


потому как массив, скорее всего, у тебя распределен статически, а компилятор не отвечает за инициализацию стат.массивов.
Ты же , видимо, ошибочно предполагаешь, что при первом выполнении проверки Assigned(ButtonArray[i]) она обязательно даст False, поскольку кнопок на этот момент ты никаких еще не создавал (и, соответственно, Free не будет выполняться).
Но Free может в какой-то момент и выполнится, потому что содержимое явно неинициализированного стат.распр.массива попросту неопределено (нет никакой гарантии, что все его элементы - nil)

Правильней (и красивей, imho) надо бы "нарисовать" так :

код предв.инициализации массива (его можно разместить, к примеру, в разделе иниц-ции модуля формы) :

for i := Low(ButtonArray) to High(ButtonArray) do
ButtonArray[i]:= nil;


и тогда цикл гарантированного разрушения потенциально созданных объектов в массиве будет выглядеть так:


if DM.EAnswerQuery.State = dsBrowse then
for i := 1 to AnswNum do
// уничтожить обьъект, если он на этот момент существует,
// и "убрать за собой мусор" во избежание последующих AV,
FreeAndNil(ButtonArray[i]);




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

Форум: "Основная";
Текущий архив: 2002.02.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.44 MB
Время: 0.004 c
1-8911
Марина
2002-01-17 13:48
2002.02.04
Цветшрифта в ячейке StringGrid


1-8813
daos
2002-01-19 10:33
2002.02.04
Дочерняя форма в dll


1-8892
szap
2002-01-15 19:32
2002.02.04
Какая дата была была 5 дней назад?


1-8907
petyun
2002-01-17 10:04
2002.02.04
строка в ListBox как в плей-листе WinAmp


1-8819
vbazik
2002-01-15 18:01
2002.02.04
Копирование фрагмента изображения





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский