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

Вниз

Секция finalization не выполняется   Найти похожие ветки 

 
DrPass ©   (2008-07-03 13:54) [0]

Коллеги, кто-нибудь сталкивался с этим феноменом?
Есть пакет, проинсталлированный в IDE D2007. Есть модуль в этом пакете, секции initialization/finalization в нем. Инициализация выполняется корректно. Финализация - нет.
Пример:

initialization
finalization
 ShowMessage("Boo");
end.

Генерируется вот такой код (оптимизатор выключен):

uESPPlugin.pas.292: ShowMessage("Boo");
0AAF7E70 55               push ebp
0AAF7E71 8BEC             mov ebp,esp
0AAF7E73 33C0             xor eax,eax
0AAF7E75 55               push ebp
0AAF7E76 68A17EAF0A       push $0aaf7ea1
0AAF7E7B 64FF30           push dword ptr fs:[eax]
0AAF7E7E 648920           mov fs:[eax],esp
0AAF7E81 FF0548B0AF0A     inc dword ptr [$0aafb048]
0AAF7E87 750A             jnz $0aaf7e93
0AAF7E89 B8B47EAF0A       mov eax,$0aaf7eb4
0AAF7E8E E875A6FFFF       call $0aaf2508
uESPPlugin.pas.293: end.
0AAF7E93 33C0             xor eax,eax


При этом после inc dword ptr [$0aafb048] флаг ZF оказывается сброшен, и по jnz мы благополучно выходим из секции финализации, ничего в ней не выполняя. Смысл этой переменной мне неизвестен.
При этом в другом модуле этого же пакета финализация работает корректно (!)
Подбросьте умную идею... я в растерянности


 
han_malign ©   (2008-07-03 14:54) [1]

а ты попробуй MessageBox(0, "Yahoo", "Boo", MB_OK) вместо ShowMessage...


 
DrPass ©   (2008-07-03 14:58) [2]

А без разницы, я просто пример привел. Любой код в финализации этого модуля ведет себя аналогичным образом...


 
Anatoly Podgoretsky ©   (2008-07-03 15:27) [3]

> DrPass  (03.07.2008 13:54:00)  [0]

Это признак нужно ли выполнять, видишь в последней строке xor eax,eax?
Это как раз он для следующего вызова.
Ты пробовал ставить там точку останова?


 
DrPass ©   (2008-07-03 15:34) [4]


> Anatoly Podgoretsky ©   (03.07.08 15:27) [3]

Это завершение секции finalization. Как раз туда он и прыгает тем jnz


 
Anatoly Podgoretsky ©   (2008-07-03 16:18) [5]

> DrPass  (03.07.2008 15:34:04)  [4]

Я про это и говорю и возвращает Boolean для дальнейших входов в данную секцию, изначально видимо это значение -1 все последующие будут уже 0 и inc предотвратит повторное исполнение. Я предлагаю оттрассировать.


 
DrPass ©   (2008-07-03 16:24) [6]

Похоже на то, но он в эту секцию входит только один раз при выгрузке пакета, и сразу же "отбивает" ее



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

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

Наверх





Память: 0.46 MB
Время: 0.005 c
15-1247250170
Аноним
2009-07-10 22:22
2009.09.13
С днем рождения, Ketmar


15-1247675432
Кто б сомневался
2009-07-15 20:30
2009.09.13
Перегрузка оператора присваивания в структурах


15-1247808740
b/@.
2009-07-17 09:32
2009.09.13
Пятничное


15-1248035401
Юрий
2009-07-20 00:30
2009.09.13
С днем рождения ! 19 июля 2009 воскресенье


1-1214468435
KSergey
2008-06-26 12:20
2009.09.13
Ошибки при вычислениях после EIntegerOverflow





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