• 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
    [autoit]

    #cs ----------------------------------------------------------------------------

    [/autoit] [autoit][/autoit] [autoit]

    AutoIt Version: 3.3.9.0 (beta)
    Author: peethebee
    Date: 2012-06-10

    [/autoit] [autoit][/autoit] [autoit]

    Script Function:
    Print data.

    [/autoit] [autoit][/autoit] [autoit]

    #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) & ': '

    [/autoit] [autoit][/autoit] [autoit]

    ; string
    If IsString($data) Then Return $result & $data

    [/autoit] [autoit][/autoit] [autoit]

    ; 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

    [/autoit] [autoit][/autoit] [autoit]

    ; TODO more
    Return $result & $data

    [/autoit] [autoit][/autoit] [autoit]

    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

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; 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)

    [/autoit]

    Download:
    autoit.de/wcf/attachment/15824/


    Johannes