Neo писал(а):
Изменения в файл не помогло
Попробуйте закомментировать там же
inherited; ( c Terminate; и без )
------------ Дoбавленo в 17.01:
Neo писал(а):
Я выждал эту ошибку, и что Вы себе думаете? Да только я ее и видел после нажатия кнопки Ok (других не было, окно ошибки как и на скрине)! Никаких отчетов не создалось почему-то.
1nd1g0 писал(а):
Скорее всего это произошло потому, что у Вас сама программа в себе перехватила исключение.
==
Замена обработчика критических ошибок на системный: ==
==
Убедитесь, что в настройках: HiAsm - Сервис - Настройка - Общие - Оптимизация - Сжимать EXE = FALSE ==
По умолчанию некоторые базовые ошибки приложение обрабатывает самостоятельно, отображая малоинформативное окно с номером и адресом, после чего приложение/поток благополучно завершается. Процедуры обработки ошибок сокрыты в недрах прекомпилированной системной библиотеки, по умолчанию не доступной для редактирования простым смертным
(речь не о тех, кто знает ассемблер, имеет исходные тексты и сможет заставить компилятор их принять вместо системной библиотеки). Прилагаемая утилита:
Add(MainForm,1258002,238,217)
{
Left=20
Top=105
Caption="Exception handler patch"
link(onCreate,7381010:doSearch,[])
}
Add(FileStream,3170003,455,245)
{
Mode=2
Point(doCopyFromStream)
Point(doPosition)
link(onLoad,663500:doConvert,[])
link(FileName,3618322:String,[(461,205)(375,205)(375,283)(363,283)])
}
Add(Stream2Hex,663500,497,245)
{
link(onResult,16348481:doSearch,[])
}
Add(FileSearch,7381010,287,231)
{
Ext="*.exe"
SubDir=1
FullName=1
link(onSearch,3618322:doAdd,[])
link(Dir,7983766:CurrentDir,[])
}
Add(ListBox,3618322,336,231)
{
Left=455
Top=180
Align=5
Layout="Layer H"
WidthScale=50
Point(onDblClick)
Point(String)
Point(Value)
link(onDblClick,3170003:doOpen,[])
}
Add(Dir,7983766,294,175)
{
}
Add(Position,16348481,539,245)
{
Target="31D28D45F4648B0A6489028908C74004"
ShortSearch=1
link(onSearch,13413539:doCalc,[])
}
Add(FastMathParse,13413539,581,245)
{
DataCount=1
MathStr="(((%1 + 1) / 2) - 1)"
ResultType=0
link(onResult,375822:doEvent1,[])
}
Add(MemoryStream,4456313,406,210)
{
Stream=[ZIP0100000078DA3B0C0000C400C4]
}
Add(DoData,14696612,406,259)
{
link(onEventData,3170003:doCopyFromStream,[])
link(Data,4456313:Stream,[])
}
Add(Hub,375822,630,245)
{
link(onEvent1,3170003:doPosition,[(673,251)(673,301)(443,301)(443,272)])
link(onEvent2,14696612:doData,[(656,258)(656,314)(389,314)(389,265)])
}
позволяет исправить это досадное недоразумение. Кладётся в папку рядом с обрабатываемыми приложениями (
не запакованными *.exe, то есть в настройках конструктора должна быть отключена оптимизация, возможно, стоит добавить поддержку *.dll). Двойной щелчок по жертве модифицирует файл таким образом, чтобы при возникновении критической ошибки появлялось стандартное окно ошибок Windows, и, при правильной регистрации в системе отладчика, позволяло как минимум получить дамп памяти и расширенную информацию, а как максимум - сразу приступить к отладке на уровне машинных кодов. Инструкция по настройке встроенного отладчика на примере систем NT5.x есть на 5-й страницы этой темы.
Утилита расчитана на самизнаетекакойкомпилятор, перед запуском последнего исправленного приложения утилиту следует закрыть.
------------ Дoбавленo в 22.54:
Кстати, сигнатурный поиск в утилите выше, при перенастройке FileSearch.Ext на *.* сможет пропатчить не только exe, но и dll, и даже
HiAsmcompilerугадайте_какой_компиляторSystem.dcu , после чего
все последующие приложения этого компилятора будут передавать свои ошибки на обработку установленного в системе отладчика.