- Offizieller Beitrag
Hi,
Eine kleine UDF, um Variablen auszugeben. Mich hat es immer irritiert, dass manche Funktion (_ArrayDisplay anyone!?) der Meinung ist, einfach still (außer @error) zu bleiben, wenn man ihr nichts passendes zuwirft. Unter PHP hat mir var_dump immer ganz gut gefallen zum Debuggen.
Daher hier eine Version davon für AutoIt. Die UDF ist bei Weitem noch nicht für alle Datentypen gerüstet, unterstützt aber schon Strings, Integer, Floats und bis zu zweidimensionale Arrays (höherdimensionale werden mit "x-dim array" ausgegeben).
Wer für weitere Datentypen Code beisteuern kann, darf das sehr gerne tun!
Code:
Spoiler anzeigen
#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]AutoIt Version: 3.3.9.0 (beta)
Author: peethebee
Date: 2012-06-10
Script Function:
Print data.
#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]Func var_dump($data, $detailed = False, $separator = 'default')
If $separator == 'default' Then $separator = Opt('GUIDataSeparatorChar')
Local $result = ''
If $detailed Then $result = $result & VarGetType($data) & ': '
; string
If IsString($data) Then Return $result & $data
; arrays
If IsArray($data) Then
Switch UBound($data, 0)
Case 1
; 1-dim array
$result = $result & '['
For $i = 0 To UBound($data) - 1
If $i > 0 Then $result = $result & $separator
$result = $result & var_dump($data[$i], $detailed, $separator)
Next
Return $result & ']'
Case 2
; 2-dim array
$result = $result & '[' & @CRLF
For $i = 0 To UBound($data, 1) - 1
$result = $result & ' ['
For $j = 0 To UBound($data, 2) - 1
If $j > 0 Then $result = $result & $separator
$result = $result & var_dump($data[$i][$j], $detailed, $separator)
Next
$result = $result & ']' & @CRLF
Next
Return $result & ']'
Case Else
Return UBound($data, 0) & '-dim array'
EndSwitch
EndIf
; TODO more
Return $result & $data
EndFunc ;==>var_dump
[/autoit] [autoit][/autoit] [autoit]Func var_dump_c($data, $detailed = False, $separator = 'default')
ConsoleWrite(var_dump($data, $detailed, $separator) & @CRLF)
EndFunc ;==>var_dump_c
; some tests
ConsoleWrite('strings' & @CRLF)
ConsoleWrite((var_dump('Test') == 'Test') & @CRLF)
ConsoleWrite((var_dump('') == '') & @CRLF)
ConsoleWrite('numbers' & @CRLF)
ConsoleWrite((var_dump(5) == '5') & @CRLF)
ConsoleWrite((var_dump(5.5) == '5.5') & @CRLF)
ConsoleWrite('1-dim array' & @CRLF)
Global $array[4] = [1,5,10,3]
ConsoleWrite((var_dump($array, False, ',') == '[1,5,10,3]') & @CRLF)
ConsoleWrite((var_dump($array, True, '-') == 'Array: [Int32: 1-Int32: 5-Int32: 10-Int32: 3]') & @CRLF)
ConsoleWrite('2-dim array' & @CRLF)
Global $array[2][2] = [[1,5],[10,3]]
ConsoleWrite((var_dump($array, False, ',') == '['&@CRLF&' [1,5]'&@CRLF&' [10,3]'&@CRLF&']') & @CRLF)
Download:
autoit.de/wcf/attachment/15824/
Johannes