Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include-Once
- #include <Array.au3>
- ; #FUNCTION# ;=================================================================================
- ; Function Name ...: z
- ; Description ........: Debug, gives information about a variable
- ; Syntax................: z($var[, $iTypeDisp = 1[, $sDescription = ''[, $LineNum = @ScriptLineNumber[, $error = @error[, $extended = @extended]]]]])
- ; Parameters:
- ; $var - The variable. Should not be an explicit value, because it does not make sense
- ; $iTypeDisp - (0,1,2,3,4) How to display the information
- ; |0 or less - output disabled
- ; |1 - MsgBox / _ArrayDisplay
- ; |2 - ConsoleWrite
- ; |3 - ToolTip
- ; |4 - FileWrite, zDebugger.log in the script directory
- ; Additional keys
- ; |+8 - adds info @error and @extended
- ; $sDescription - The explanatory description. It also can be related to test variables, do not require full information.
- ; The following parameters are not intended to be modified:
- ; $LineNum - Here is the line number
- ; $error - It is necessary to restore the @error as it was before the call debug
- ; $extended - It is necessary to restore the @extended as it was before the call debug
- ; Return values ....: Returns 0 and sets @error and @extended such as they were before the call.
- ; Author(s) ..........: AZJIO
- ; 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.
- ; ============================================================================================
- ; Имя функции ...: z
- ; Описание ........: Отладчик, выдаёт информацию о переменной
- ; Синтаксис.......: z($var[, $iTypeDisp = 1[, $sDescription = ''[, $LineNum = @ScriptLineNumber[, $error = @error[, $extended = @extended]]]]])
- ; Параметры:
- ; $var - Проверяемая переменная. Не должна быть явным значением, так как это не имеет смысла
- ; $iTypeDisp - (0,1,2,3,4) Способ вывода информации
- ; |0 и менее - вывод отключен
- ; |1 - сообщение
- ; |2 - консоль
- ; |3 - подсказка
- ; |4 - файл zDebugger.log в каталоге скрипта
- ; Дополнительные ключи
- ; |+8 - добавляет информацию @error и @extended
- ; $sDescription - Поясняющее описание. Здесь также могуть быть сопутствующие тесту переменные, не требующие полной информации.
- ; Следующие параметры не предназначены для изменения:
- ; $LineNum - Здесь передаётся номер строки
- ; $error - Это нужно для восстановления значения @error как он был до вызова функции отладки
- ; $extended - Это нужно для восстановления значения @extended как он был до вызова функции отладки
- ; Возвращаемое значение: Возвращает 0 и устанавливает @error и @extended такими какими они были до вызова.
- ; Автор ..........: AZJIO
- ; Примечания ..: Настройте вывод, изменив значения по умолчанию $iTypeDisp, $sVarGetType, $LineNum внутри функции. Можно использовать разные ключи вывода $iTypeDisp, но используя дополнительное слагаемое "-12" вместо 0 можно полностью отключить вывод.
- ; ============================================================================================
- Func z($var, $iTypeDisp = 1, $sDescription = '', $LineNum = @ScriptLineNumber, $error = @error, $extended = @extended)
- If $iTypeDisp < 1 Then Return SetError($error, $extended, 0)
- ; En
- Local $LngMb1 = 'Message'
- Local $LngMb2 = 'Show %s items of an array?'
- Local $LngDms = 'dimension = '
- Local $LngCnt = 'Continue?'
- ; Ru
- ; если русская локализация, то русский язык
- If @OSLang = 0419 Then
- $LngMb1 = 'Сообщение'
- $LngMb2 = 'Показать %s элементов массива?'
- $LngDms = 'размерность = '
- $LngCnt = 'Продолжить?'
- EndIf
- $LineNum = 'Str=' & $LineNum
- Local $cu, $iLen, $sText, $tmp, $u, $u2, $vgt, $sVarGetType = 'VType=', $sPath = @ScriptDir & '\zDebugger.log', $iArrLimit = 100, $iTipLimit = 1000, $sExt
- If BitAND($iTypeDisp, 8) Then
- $iTypeDisp -= 8
- $sExt = ', @error = ' & $error & ' @extended = ' & $extended
- EndIf
- $vgt = VarGetType($var)
- Switch $vgt
- Case 'Array'
- $u = UBound($var)
- $cu = UBound($var, 0)
- Switch $cu
- Case 1
- If $u > $iArrLimit And MsgBox(4, $LngMb1, StringFormat($LngMb2, $u)) = 7 Then
- Return SetError($error, $extended, 0)
- Else
- If $iTypeDisp = 1 Then
- _ArrayDisplay($var, $LineNum & ', ' & $sDescription & '[' & $u & '], 1D' & $sExt)
- Else
- $sText = $LineNum & ', ' & $sDescription & $vgt & '[' & $u & '], 1D' & $sExt & @CRLF
- For $i = 0 To $u - 1
- $sText &= $i & @TAB & '[' & $var[$i] & ']' & @CRLF
- Next
- Switch $iTypeDisp
- Case 2
- ConsoleWrite($sText & @CRLF)
- Case 3
- If StringLen($sText) > $iTipLimit Then $sText = StringLeft($sText, $iTipLimit)
- ToolTip($sText, 0, 0)
- Case 4
- FileWrite($sPath, $sText & @CRLF)
- EndSwitch
- EndIf
- EndIf
- Case 2
- $u2 = UBound($var, 2)
- If $u > $iArrLimit And MsgBox(4, $LngMb1, StringFormat($LngMb2, $u)) = 7 Then
- Return SetError($error, $extended, 0)
- Else
- If $iTypeDisp = 1 Then
- _ArrayDisplay($var, $LineNum & ', ' & $sDescription & '[' & $u & '][' & $u2 & '], 2D' & $sExt)
- Else
- $sText = $LineNum & ', ' & $sDescription & $vgt & '[' & $u & '][' & $u2 & '], 2D' & $sExt & @CRLF
- For $i = 0 To $u - 1
- $tmp = ''
- For $j = 0 To $u2 - 1
- $tmp &= '[' & $var[$i][$j] & ']' & @TAB
- Next
- $sText &= $i & @TAB & $tmp & @CRLF
- Next
- Switch $iTypeDisp
- Case 2
- ConsoleWrite($sText & @CRLF)
- Case 3
- If StringLen($sText) > $iTipLimit Then $sText = StringLeft($sText, $iTipLimit)
- ToolTip($sText, 0, 0)
- Case 4
- FileWrite($sPath, $sText & @CRLF)
- EndSwitch
- EndIf
- EndIf
- Case Else
- Switch $iTypeDisp
- Case 1
- If MsgBox(262144 + 4, $LineNum & ', ' & $sVarGetType & $vgt & $sExt, $sDescription & ' ' & $LngDms & $cu & @CRLF & @CRLF & $LngCnt) = 7 Then Exit
- Case 2
- ConsoleWrite($LineNum & ', ' & $sDescription & $sVarGetType & $vgt & ', ' & $LngDms & $cu & $sExt & @CRLF)
- Case 3
- $sText = $LineNum & ', ' & $sDescription & $sVarGetType & $vgt & ', ' & $LngDms & $cu & $sExt
- If StringLen($sText) > $iTipLimit Then $sText = StringLeft($sText, $iTipLimit)
- ToolTip($sText, 0, 0)
- Case 4
- $sText = $LineNum & ', ' & $sDescription & $sVarGetType & $vgt & ', ' & $LngDms & $cu & $sExt & @CRLF & @CRLF
- FileWrite($sPath, $sText)
- EndSwitch
- EndSwitch
- Case 'String'
- $iLen = StringLen($var)
- If StringRegExp(StringRight($var, 1) & StringLeft($var, 1), '\s') Then $var = '|' & $var & '|'
- Switch $iTypeDisp
- Case 1
- If MsgBox(262144 + 4, $LineNum & ', ' & $vgt & ':' & $iLen & $sExt, $sDescription & $var & @CRLF & @CRLF & $LngCnt) = 7 Then Exit
- Case 2
- ConsoleWrite($LineNum & ', ' & $sDescription & $vgt & ':' & $iLen & $sExt & @CRLF & '= ' & $var & @CRLF)
- Case 3
- ToolTip($LineNum & ', ' & $sDescription & $vgt & ':' & $iLen & $sExt & @CRLF & '= ' & $var, 0, 0)
- Case 4
- FileWrite($sPath, $LineNum & ', ' & $sDescription & $vgt & ':' & $iLen & $sExt & @CRLF & '= ' & $var & @CRLF & @CRLF)
- EndSwitch
- Case 'Binary'
- $iLen = StringLen($var) / 2 - 1
- Switch $iTypeDisp
- Case 1
- If MsgBox(262144 + 4, $LineNum & ', ' & $vgt & ':' & $iLen & $sExt, $sDescription & $var & @CRLF & @CRLF & $LngCnt) = 7 Then Exit
- Case 2
- ConsoleWrite($LineNum & ', ' & $sDescription & $vgt & ':' & $iLen & $sExt & @CRLF & '= ' & $var & @CRLF)
- Case 3
- ToolTip($LineNum & ', ' & $sDescription & $vgt & ':' & $iLen & $sExt & @CRLF & '= ' & $var, 0, 0)
- Case 4
- FileWrite($sPath, $LineNum & ', ' & $sDescription & $vgt & ':' & $iLen & $sExt & @CRLF & '= ' & $var & @CRLF & @CRLF)
- EndSwitch
- Case 'DLLStruct'
- $iLen = DllStructGetSize($var)
- ; $var = DllStructGetData($var, 'byte['&$iLen&']')
- Switch $iTypeDisp
- Case 1
- If MsgBox(262144 + 4, $LineNum & ', ' & $vgt & ':' & $iLen & $sExt, $sDescription & $var & @CRLF & @CRLF & $LngCnt) = 7 Then Exit
- Case 2
- ConsoleWrite($LineNum & ', ' & $sDescription & $vgt & ':' & $iLen & $sExt & @CRLF & '= ' & $var & @CRLF)
- Case 3
- ToolTip($LineNum & ', ' & $sDescription & $vgt & ':' & $iLen & $sExt & @CRLF & '= ' & $var, 0, 0)
- Case 4
- FileWrite($sPath, $LineNum & ', ' & $sDescription & $vgt & ':' & $iLen & $sExt & @CRLF & '= ' & $var & @CRLF & @CRLF)
- EndSwitch
- Case Else
- Switch $iTypeDisp
- Case 1
- If MsgBox(262144 + 4, $LineNum & ', ' & $sVarGetType & $vgt & $sExt, $sDescription & $var & @CRLF & @CRLF & $LngCnt) = 7 Then Exit
- Case 2
- ConsoleWrite($LineNum & ', ' & $sDescription & $sVarGetType & $vgt & $sExt & @CRLF & '= ' & $var & @CRLF)
- Case 3
- ToolTip($LineNum & ', ' & $sDescription & $sVarGetType & $vgt & $sExt & @CRLF & '= ' & $var, 0, 0)
- Case 4
- FileWrite($sPath, $LineNum & ', ' & $sDescription & $sVarGetType & $vgt & $sExt & @CRLF & '= ' & $var & @CRLF & @CRLF)
- EndSwitch
- EndSwitch
- Return SetError($error, $extended, 0)
- EndFunc ;==>z
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement