Диагностические сообщения при выполнении скрипта |
При обнаружении ошибок в коде скрипта в момент выполнения пользователю выдаются диагностические сообщения.
Например, если в скрипте есть обращение к переменной, которая ранее не была опеределена, на экран будет выдано сообщение типа «name XXXX is not defined».
def MoveObject(_hmap:maptype.HMAP, _hobj:maptype.HOBJ, _parm:ctypes.POINTER(maptype.DOUBLEPOINT)) -> int: if hobj == 0: return 0
В данном случае (if hobj == 0:) переменная hobj должна иметь символ подчеркивания, как в объявлении функции MoveObject.
if _hobj == 0 return 0
В данном случае оператор if должен завершаться двоеточием.
dofunction = doforeach.DoForEach('Перемещение объектов:', TAC_MED_MOVE)
В данном случае идентификатор TAC_MED_MOVE указан без имени модуля, в котором он определен:
dofunction = doforeach.DoForEach('Перемещение объектов:', logapi.TAC_MED_MOVE)
При использовании компонента tkinter диагностические сообщения блокируются и скрипт завершается без выдачи каких-либо сообщений на экран. В этом случае можно для отладки вызвать вычислительную процедуру в обход диалога с передачей некоторых констант вместо задаваемых в диалоге значений. После диагностирования и исправления ошибок в скрипте вызов компонента tkinter восстанавливается. Например:
# Move selected objects or one object def MoveObjects(hmap:maptype.HMAP, hobj:maptype.HOBJ) -> float:
MoveObjectsByDxDy(hmap, hobj, 0, 1000) # Временный вызов процедуры для диагностики
root = tkinter.Tk() root.title("Сдвиг объектов") ... def CallMoveObjects(): MoveObjectsByDxDy(hmap, hobj, dx_value.get(), dy_value.get()) root.destroy()
message_button = tkinter.Button(text="Выполнить", command=CallMoveObjects) ...
|