Вверх ↑
Ответов: 4622
Рейтинг: 746
#1: 2017-11-22 12:07:36 ЛС | профиль | цитата
Процесс исполнения такой:
- создаётся элемент 1 (первым создаётся MainForm)
- заполняются его свойства
- создаётся элемент 2
- заполняются его свойства
....
- выполняется THIMainForm.Start, в которой вызывается InitDo

- когда програма получает команду закрытия - уничтожается элемент 2
- уничтожается элемент 1

На порядок "элемент 1-2-N" влияет "Задний план"/"Передний план".
Следовательно, если некоторый код элемента N обращается к элементу X до того, как создан элемент X, или после того, как он был уничтожен - получится ошибка. В твоём IC THiAsmClass.Create выполняется в процессе создания элементов, а THiAsmClass.Destroy - в процессе уничтожения. Так вот, вполне обычная ситуация, что в зависимости от порядка создания/уничтожения элементов твой метод Create/Destroy может пытаться обратиться к элементу, который ещё не создан или был уже уничтожен - вот и получается ошибка. При этом можно добиться нужного порядка создания/уничтожения, чтобы было без ошибки, но это не лучший вариант.
карма: 26

0
Редактировалось 2 раз(а), последний 2017-11-22 12:09:29