Диагностические сообщения при выполнении скрипта

Печать Предыдущая страница Стартовая страница Следующая страница

При обнаружении ошибок в коде скрипта в момент выполнения пользователю выдаются диагностические сообщения.

 

script_diagnoctic1

 

Например, если в скрипте есть обращение к переменной, которая ранее не была опеределена, на экран будет выдано сообщение типа «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.

 

script_diagnoctic2

 

   if _hobj == 0

       return 0

 

В данном случае оператор if должен завершаться двоеточием.

 

script_diagnoctic3

 

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)

   ...