Форум: "Потрепаться";
Текущий архив: 2002.04.15;
Скачать: [xml.tar.bz2];
ВнизDelphi: конструктор и деструктор Найти похожие ветки
← →
Shaman_Naydak (2002-03-06 17:39) [15]>> Vuk
Вы правильно меня поправили, я не совсем правильно расписал из желания упростить. Но и вас можно тоже поправить :)
Там нет проверки на self = nil.
просто дельфи перед вызовом конструктора
загоняет в eax - ссылка на класс (в смысле TClass),
а в , ВНИМАНИЕ, DL = 1 <-!!
и вызывает констуктор.
Да, в каждый конструктор дельфей встраивается код, который первым делом проверяет, а не равен ли dl = 0? Если не равен, стало быть этот конструктор первый в списке и надо делать вещки, а именно вызов vmtNewInstance. Это обычно NewInstance TObject"a.
Тот вызывает vmtInstanceSize (обычно InstanceSize TObject"a),
а затем вызывается GetMem..
Ну и естественно, при вызове вложенного конструктора Dl = 0 и ситуация не срабатывает.
В конце конструктора тоже встраивается код, который при dl <>0
вызывает vmtAfterConstruction (AfterConstruction)
Запарился я писать.. В общем, аналогично и для деструктора!
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2002.04.15;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.005 c