Добавлено: 15 Июнь 2004, 19:07
Здравствуйте!
С6.1 RC2
Начинаю юзать C6. Заметил следующую ситуацию:
В GlobalData описывается класс
В теле программы после инициализации классов GlobalErrors и INIMgr вызывается и процедура инициализации DctInit. Но если до вызова этой процедуры завершить программу через RETURN (такой код, например, используется в шаблоне "One application Instance" из состава ABCFree при проверке повторного запуска приложения) , то приложение вываливается в ошибку "Инструкция по адресу... Память не может быть считана". Получается, что неявно срабатывает деструктор класса Dictionary, а конструктор перед этим не сработал. И только, если перед RETURN явно указать DctInit, то все в порядке.
Подскажите, пожалуйста, как все-таки в этой ситуации работает конструктор и деструктор класса? Сие есть баг, или это ошибка в шаблоне "One application Instance"?
С уважением, Семен
Написал: ClaList(2)
С6.1 RC2
Начинаю юзать C6. Заметил следующую ситуацию:
В GlobalData описывается класс
Код: Выделить всё
Dictionary CLASS,THREAD
Construct PROCEDURE
Destruct PROCEDURE
END
Dictionary.Construct PROCEDURE
CODE
IF THREAD()<>1
DctInit()
END
Dictionary.Destruct PROCEDURE
CODE
DctKill()
, где DctInit PROCEDURE !
Initializes the dictionary definition module
DctKill PROCEDURE ! Kills
the dictionary definition module
Подскажите, пожалуйста, как все-таки в этой ситуации работает конструктор и деструктор класса? Сие есть баг, или это ошибка в шаблоне "One application Instance"?
С уважением, Семен
Написал: ClaList(2)