Ausgabe des Inhalts einer Map als Schlüssel-Wert-Paare in die Konsole.
Für nicht darstellbare Werte wird deren Typ ausgegeben.
Edit: Ich habe mal die Markierung für String-Werte mit eingefügte. Danke für den Hinweis Mars
AutoIt
; #FUNCTION# =======================================================================================
; Name ..........: _ConsoleWriteMap
; Description ...: Writes the content of a map as key-value pairs to the console.
; ...............: For values that cannot be displayed, their type is specified.
; Syntax ........: _ConsoleWriteMap($_m)
; Parameters ....: $_m - The map to be displayed.
; Return values .: None
; Author ........: BugFix
; ==================================================================================================
Func _ConsoleWriteMap(ByRef $_m)
Local $aC[] = ['-> ', '>> '], $n = 0, $sType, $vValue
Local $sOut = StringFormat(' %-20s%s-- VALUE --\n', '-- KEY --')
For $k In MapKeys($_m)
$n = Abs($n -1)
$sType = VarGetType($_m[$k])
Switch $sType
Case 'Array', 'Map', 'Object', 'DLLStruct', 'Function', 'UserFunction'
$vValue = $sType
Case 'Keyword'
$vValue = (IsKeyword($_m[$k]) = 1 ? 'Default' : 'Null')
Case 'String'
$vValue = '"' & $_m[$k] & '"'
Case Else
$vValue = String($_m[$k])
EndSwitch
$sOut &= StringFormat('%s%-20s%s%s\n', $aC[$n], $k, $vValue)
Next
ConsoleWrite($sOut & @CRLF)
EndFunc
Alles anzeigen
AutoIt
Local $a[] = [1,2,3], $m0[], $o = ObjCreate('Scripting.Dictionary'), $nothing
Local $m[]
$m.Arr = $a
$m.Map = $m0
$m.Obj = $o
$m.String = 'Bla'
$m.Num = 15
$m.NumStr = "15"
$m.Empty = $nothing
$m.Struct = DllStructCreate('double')
$m.Ptr = DllStructGetPtr($m.Struct)
$m.Hwnd = WinGetHandle('[ACTIVE]')
$m.Null = Null
$m.Def = Default
$m.Func = MsgBox
$m.UserFunc = _ConsoleWriteMap
_ConsoleWriteMap($m)
Alles anzeigen