Advertisement
AZJIO

Debugger

Jan 28th, 2013
1,782
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AutoIt 10.15 KB | None | 0 0
  1. #include-Once
  2. #include <Array.au3>
  3.  
  4. ; #FUNCTION# ;=================================================================================
  5. ; Function Name ...: z
  6. ; Description ........: Debug, gives information about a variable
  7. ; Syntax................: z($var[, $iTypeDisp = 1[, $sDescription = ''[, $LineNum = @ScriptLineNumber[, $error = @error[, $extended = @extended]]]]])
  8. ; Parameters:
  9. ;       $var - The variable. Should not be an explicit value, because it does not make sense
  10. ;       $iTypeDisp - (0,1,2,3,4) How to display the information
  11. ;                  |0 or less - output disabled
  12. ;                  |1 - MsgBox / _ArrayDisplay
  13. ;                  |2 - ConsoleWrite
  14. ;                  |3 - ToolTip
  15. ;                  |4 - FileWrite, zDebugger.log in the script directory
  16. ;                  Additional keys
  17. ;                  |+8 - adds info @error and @extended
  18. ;       $sDescription - The explanatory description. It also can be related to test variables, do not require full information.
  19. ;       The following parameters are not intended to be modified:
  20. ;       $LineNum - Here is the line number
  21. ;       $error - It is necessary to restore the @error as it was before the call debug
  22. ;       $extended - It is necessary to restore the @extended as it was before the call debug
  23. ; Return values ....: Returns 0 and sets @error and @extended such as they were before the call.
  24. ; Author(s) ..........: AZJIO
  25. ; Remarks ..........: Configure the output by changing the default value of $iTypeDisp, $sVarGetType, $LineNum inside a function. You can use different keys display $iTypeDisp, but using additional variable "-12" instead of 0 to completely turn off the output.
  26. ; ============================================================================================
  27. ; Имя функции ...: z
  28. ; Описание ........: Отладчик, выдаёт информацию о переменной
  29. ; Синтаксис.......: z($var[, $iTypeDisp = 1[, $sDescription = ''[, $LineNum = @ScriptLineNumber[, $error = @error[, $extended = @extended]]]]])
  30. ; Параметры:
  31. ;       $var - Проверяемая переменная. Не должна быть явным значением, так как это не имеет смысла
  32. ;       $iTypeDisp - (0,1,2,3,4) Способ вывода информации
  33. ;                  |0 и менее - вывод отключен
  34. ;                  |1 - сообщение
  35. ;                  |2 - консоль
  36. ;                  |3 - подсказка
  37. ;                  |4 - файл zDebugger.log в каталоге скрипта
  38. ;                  Дополнительные ключи
  39. ;                  |+8 - добавляет информацию @error и @extended
  40. ;       $sDescription - Поясняющее описание. Здесь также могуть быть сопутствующие тесту переменные, не требующие полной информации.
  41. ;       Следующие параметры не предназначены для изменения:
  42. ;       $LineNum - Здесь передаётся номер строки
  43. ;       $error - Это нужно для восстановления значения @error как он был до вызова функции отладки
  44. ;       $extended - Это нужно для восстановления значения @extended как он был до вызова функции отладки
  45. ; Возвращаемое значение: Возвращает 0 и устанавливает @error и @extended такими какими они были до вызова.
  46. ; Автор ..........: AZJIO
  47. ; Примечания ..: Настройте вывод, изменив значения по умолчанию $iTypeDisp, $sVarGetType, $LineNum внутри функции. Можно использовать разные ключи вывода $iTypeDisp, но используя дополнительное слагаемое "-12" вместо 0 можно полностью отключить вывод.
  48. ; ============================================================================================
  49. Func z($var, $iTypeDisp = 1, $sDescription = '', $LineNum = @ScriptLineNumber, $error = @error, $extended = @extended)
  50.     If $iTypeDisp < 1 Then Return SetError($error, $extended, 0)
  51.     ; En
  52.     Local $LngMb1 = 'Message'
  53.     Local $LngMb2 = 'Show %s items of an array?'
  54.     Local $LngDms = 'dimension = '
  55.     Local $LngCnt = 'Continue?'
  56.  
  57.     ; Ru
  58.     ; если русская локализация, то русский язык
  59.     If @OSLang = 0419 Then
  60.         $LngMb1 = 'Сообщение'
  61.         $LngMb2 = 'Показать %s элементов массива?'
  62.         $LngDms = 'размерность = '
  63.         $LngCnt = 'Продолжить?'
  64.     EndIf
  65.     $LineNum = 'Str=' & $LineNum
  66.     Local $cu, $iLen, $sText, $tmp, $u, $u2, $vgt, $sVarGetType = 'VType=', $sPath = @ScriptDir & '\zDebugger.log', $iArrLimit = 100, $iTipLimit = 1000, $sExt
  67.     If BitAND($iTypeDisp, 8) Then
  68.         $iTypeDisp -= 8
  69.         $sExt = ', @error = ' & $error & ' @extended = ' & $extended
  70.     EndIf
  71.     $vgt = VarGetType($var)
  72.     Switch $vgt
  73.         Case 'Array'
  74.             $u = UBound($var)
  75.             $cu = UBound($var, 0)
  76.             Switch $cu
  77.                 Case 1
  78.                  
  79.                     If $u > $iArrLimit And MsgBox(4, $LngMb1, StringFormat($LngMb2, $u)) = 7 Then
  80.                         Return SetError($error, $extended, 0)
  81.                     Else
  82.                         If $iTypeDisp = 1 Then
  83.                             _ArrayDisplay($var, $LineNum & ', ' & $sDescription & '[' & $u & '], 1D' & $sExt)
  84.                         Else
  85.                             $sText = $LineNum & ', ' & $sDescription & $vgt & '[' & $u & '], 1D' & $sExt & @CRLF
  86.                             For $i = 0 To $u - 1
  87.                                 $sText &= $i & @TAB & '[' & $var[$i] & ']' & @CRLF
  88.                             Next
  89.                             Switch $iTypeDisp
  90.                                 Case 2
  91.                                     ConsoleWrite($sText & @CRLF)
  92.                                 Case 3
  93.                                     If StringLen($sText) > $iTipLimit Then $sText = StringLeft($sText, $iTipLimit)
  94.                                     ToolTip($sText, 0, 0)
  95.                                 Case 4
  96.                                     FileWrite($sPath, $sText & @CRLF)
  97.                             EndSwitch
  98.                         EndIf
  99.                     EndIf
  100.                 Case 2
  101.                     $u2 = UBound($var, 2)
  102.                     If $u > $iArrLimit And MsgBox(4, $LngMb1, StringFormat($LngMb2, $u)) = 7 Then
  103.                         Return SetError($error, $extended, 0)
  104.                     Else
  105.                         If $iTypeDisp = 1 Then
  106.                             _ArrayDisplay($var, $LineNum & ', ' & $sDescription & '[' & $u & '][' & $u2 & '], 2D' & $sExt)
  107.                         Else
  108.                             $sText = $LineNum & ', ' & $sDescription & $vgt & '[' & $u & '][' & $u2 & '], 2D' & $sExt & @CRLF
  109.                             For $i = 0 To $u - 1
  110.                                 $tmp = ''
  111.                                 For $j = 0 To $u2 - 1
  112.                                     $tmp &= '[' & $var[$i][$j] & ']' & @TAB
  113.                                 Next
  114.                                 $sText &= $i & @TAB & $tmp & @CRLF
  115.                             Next
  116.                             Switch $iTypeDisp
  117.                                 Case 2
  118.                                     ConsoleWrite($sText & @CRLF)
  119.                                 Case 3
  120.                                     If StringLen($sText) > $iTipLimit Then $sText = StringLeft($sText, $iTipLimit)
  121.                                     ToolTip($sText, 0, 0)
  122.                                 Case 4
  123.                                     FileWrite($sPath, $sText & @CRLF)
  124.                             EndSwitch
  125.                         EndIf
  126.                     EndIf
  127.                 Case Else
  128.                     Switch $iTypeDisp
  129.                         Case 1
  130.                             If MsgBox(262144 + 4, $LineNum & ', ' & $sVarGetType & $vgt & $sExt, $sDescription & ' ' & $LngDms & $cu & @CRLF & @CRLF & $LngCnt) = 7 Then Exit
  131.                         Case 2
  132.                             ConsoleWrite($LineNum & ', ' & $sDescription & $sVarGetType & $vgt & ', ' & $LngDms & $cu & $sExt & @CRLF)
  133.                         Case 3
  134.                             $sText = $LineNum & ', ' & $sDescription & $sVarGetType & $vgt & ', ' & $LngDms & $cu & $sExt
  135.                             If StringLen($sText) > $iTipLimit Then $sText = StringLeft($sText, $iTipLimit)
  136.                             ToolTip($sText, 0, 0)
  137.                         Case 4
  138.                             $sText = $LineNum & ', ' & $sDescription & $sVarGetType & $vgt & ', ' & $LngDms & $cu & $sExt & @CRLF & @CRLF
  139.                             FileWrite($sPath, $sText)
  140.                     EndSwitch
  141.             EndSwitch
  142.         Case 'String'
  143.             $iLen = StringLen($var)
  144.             If StringRegExp(StringRight($var, 1) & StringLeft($var, 1), '\s') Then $var = '|' & $var & '|'
  145.             Switch $iTypeDisp
  146.                 Case 1
  147.                     If MsgBox(262144 + 4, $LineNum & ', ' & $vgt & ':' & $iLen & $sExt, $sDescription & $var & @CRLF & @CRLF & $LngCnt) = 7 Then Exit
  148.                 Case 2
  149.                     ConsoleWrite($LineNum & ', ' & $sDescription & $vgt & ':' & $iLen & $sExt & @CRLF & '= ' & $var & @CRLF)
  150.                 Case 3
  151.                     ToolTip($LineNum & ', ' & $sDescription & $vgt & ':' & $iLen & $sExt & @CRLF & '= ' & $var, 0, 0)
  152.                 Case 4
  153.                     FileWrite($sPath, $LineNum & ', ' & $sDescription & $vgt & ':' & $iLen & $sExt & @CRLF & '= ' & $var & @CRLF & @CRLF)
  154.             EndSwitch
  155.         Case 'Binary'
  156.             $iLen = StringLen($var) / 2 - 1
  157.             Switch $iTypeDisp
  158.                 Case 1
  159.                     If MsgBox(262144 + 4, $LineNum & ', ' & $vgt & ':' & $iLen & $sExt, $sDescription & $var & @CRLF & @CRLF & $LngCnt) = 7 Then Exit
  160.                 Case 2
  161.                     ConsoleWrite($LineNum & ', ' & $sDescription & $vgt & ':' & $iLen & $sExt & @CRLF & '= ' & $var & @CRLF)
  162.                 Case 3
  163.                     ToolTip($LineNum & ', ' & $sDescription & $vgt & ':' & $iLen & $sExt & @CRLF & '= ' & $var, 0, 0)
  164.                 Case 4
  165.                     FileWrite($sPath, $LineNum & ', ' & $sDescription & $vgt & ':' & $iLen & $sExt & @CRLF & '= ' & $var & @CRLF & @CRLF)
  166.             EndSwitch
  167.         Case 'DLLStruct'
  168.             $iLen = DllStructGetSize($var)
  169.             ; $var = DllStructGetData($var, 'byte['&$iLen&']')
  170.             Switch $iTypeDisp
  171.                 Case 1
  172.                     If MsgBox(262144 + 4, $LineNum & ', ' & $vgt & ':' & $iLen & $sExt, $sDescription & $var & @CRLF & @CRLF & $LngCnt) = 7 Then Exit
  173.                 Case 2
  174.                     ConsoleWrite($LineNum & ', ' & $sDescription & $vgt & ':' & $iLen & $sExt & @CRLF & '= ' & $var & @CRLF)
  175.                 Case 3
  176.                     ToolTip($LineNum & ', ' & $sDescription & $vgt & ':' & $iLen & $sExt & @CRLF & '= ' & $var, 0, 0)
  177.                 Case 4
  178.                     FileWrite($sPath, $LineNum & ', ' & $sDescription & $vgt & ':' & $iLen & $sExt & @CRLF & '= ' & $var & @CRLF & @CRLF)
  179.             EndSwitch
  180.         Case Else
  181.             Switch $iTypeDisp
  182.                 Case 1
  183.                     If MsgBox(262144 + 4, $LineNum & ', ' & $sVarGetType & $vgt & $sExt, $sDescription & $var & @CRLF & @CRLF & $LngCnt) = 7 Then Exit
  184.                 Case 2
  185.                     ConsoleWrite($LineNum & ', ' & $sDescription & $sVarGetType & $vgt & $sExt & @CRLF & '= ' & $var & @CRLF)
  186.                 Case 3
  187.                     ToolTip($LineNum & ', ' & $sDescription & $sVarGetType & $vgt & $sExt & @CRLF & '= ' & $var, 0, 0)
  188.                 Case 4
  189.                     FileWrite($sPath, $LineNum & ', ' & $sDescription & $sVarGetType & $vgt & $sExt & @CRLF & '= ' & $var & @CRLF & @CRLF)
  190.             EndSwitch
  191.     EndSwitch
  192.     Return SetError($error, $extended, 0)
  193. EndFunc   ;==>z
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement