AZJIO

Debugger

Jan 28th, 2013
1,036
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×