Вверх ↑
Ответов: 3889
Рейтинг: 362
#1: 2011-10-22 18:14:07 ЛС | профиль | цитата
Neo писал(а):
ошибка произошла в hiMainForm - или я неправ?

И правы, и нет. Произошла она в контексте формы, но глубже по иерархии, в процедуре уничтожения объектов (перед завершением приложения форма по списку уничтожает всё, что из неё было порождено, вызывая процедуры уничтожения), в момент уничтожения связанных с WinExec структур. Ваша ошибка и мой дизассемблер говорят, что разрушена (не инициализирована?) структура/список уничтожения объектов WinExec. Всё это справедливо только (!) если Вы ничего не меняли на схеме после возникновения ошибки и вызвали -Fxxxxx сразу после подтверждения ошибки при закрытии приложения. Можете засунуть этот WinExec в самоуничтожающийся контейнер, которыми Вы интересовались и посмотреть, что будет (там вызывается та же часть кода).
------------ Дoбавленo в 18.14:
Путаница в том, какой модуль виноват, от того, что в скомпилированном виде все эти "объекты" и "деструкторы" свалены в одну кучу и выглядят как столбик вызовов по списку в конце TClassMainForm . Естественно, там никто не пишет, какая именно процедура вызывается, там даже цикла нет, там просто тупой столбик однообразных команд, который я и принял за картинку или звук потому, что ни один психически здоровый программист такого не напишет. [offtop]Но компилятору простительно, у него и не такое встречается, как погляжу, например, бывает сложный вызов по таблице подпрограммы, в которой столбик из нескольких последовательных операций присвоения одних и тех же значений одному и тому же регистру и выход из подпрограммы в конце. Смотришь на трассировке и думаешь, "Что это было? " Издержки автоматизации производства. Компиляторы "кодят" в машинных инструкциях порою страшнее, чем HiAsm кодит для компиляторов [/offtop]
карма: 1

0