Если программа падает не дойдя до первого begin из program, то скорее всего проблема либо в отсутствующих DLL, либо что-то случается в одной из секций инициализации.
Проблему с DLL можно определить через showdep.
Проблемы в initialization - можно логировать.
Например простым скриптом обработать исходные файлы:
Проблему с DLL можно определить через showdep.
Проблемы в initialization - можно логировать.
Например простым скриптом обработать исходные файлы:
USES WordsTuning.script ; : InsertLog WORDWORKER DoFiles : DoDirPrim STRING IN aDir WordToWork '*.pas' aDir ProcessFilesWithMask ; // DoDirPrim FORWARD DoDir : DoDir STRING IN aDir aDir . aDir DoDirPrim @ DoDir aDir ProcessSubDirs ; // DoDir : DoRoot STRING IN aRoot @ DoDir aRoot ProcessSubDirs aRoot DoDirPrim ; // DoRoot //'W:common\components\rtl\external\BorlandDelphi\Vcl' DoRoot 'W:common\components\rtl\external\BorlandDelphi' DoRoot 'W:common\components\gui' DoRoot 'W:common\components\rtl\Garant' DoRoot ; // DoFiles : TestFile STRING IN aIn STRING VAR cOut aIn '.log' Cat =: cOut cOut . BOOLEAN VAR l_Changed false =: l_Changed BOOLEAN VAR l_WasEnter false =: l_WasEnter FILE VAR l_In aIn file:OpenRead =: l_In TRY FILE VAR l_Out cOut file:OpenWrite =: l_Out TRY : DoLine W-STRING IN aStr CONST cTouched '{!touched!}' ( l_WasEnter И ( ( aStr РАВНО 'end.' ) ИЛИ ( aStr РАВНО 'finalization' ) ) ) ? ( cTouched l_Out file:WriteStr [[ '{$IfDef LogInit} ' 'WriteLn(''' aIn ' initialization leave'');' ' {$EndIf}' ]] strings:Cat l_Out file:WriteStr #13#10 l_Out file:WriteStr false =: l_WasEnter ) ( aStr "начинается с" cTouched ) ! IF aStr l_Out file:WriteWStrLn ( aStr РАВНО 'initialization' ) ? ( true =: l_Changed true =: l_WasEnter cTouched l_Out file:WriteStr [[ '{$IfDef LogInit} ' 'WriteLn(''' aIn ' initialization enter'');' ' {$EndIf}' ]] strings:Cat l_Out file:WriteStr #13#10 l_Out file:WriteStr ) ELSE true =: l_Changed ENDIF ; l_In file:ReadLines DoLine FINALLY nil =: l_Out END FINALLY nil =: l_In END l_Changed IF aIn DeleteFile ! ? ( [[ 'Не удалось удалить ' aIn ]] strings:Cat . ) cOut aIn RenameFile ! ? ( [[ 'Не удалось переименовать ' cOut ' в ' aIn ]] strings:Cat . ) ELSE cOut DeleteFile ! ? ( [[ 'Не удалось удалить ' cOut ]] strings:Cat . ) ENDIF //cOut '%' tests:CheckEtalon ; // TestFile DoFiles TestFile ; InsertLog
Комментариев нет:
Отправить комментарий