Array in Label anzeigen ?

  • Hallöle,

    ich kriege es leider nicht gebacken, mein $Array[3][3] in einem Label anzeigen zu lassen :(

    habe es mit _Arraytostring versucht, aber klappt nicht wirklich ;(

    wer sagt mir bitte wie es geht?

    DANKE

    Zitat

    Laughing Man

    "I thought, what I'd do was, I'd pretend I was one of those deaf-mutes"

    Einmal editiert, zuletzt von ctec (25. August 2008 um 13:02)

    • Offizieller Beitrag

    _ArrayToString kann keine 2D-Arrays, aber man kann das auch mit Hilfe zweier verschachtelter For...Next-Schleifen erledigen:

    [autoit]


    Dim $avArray[3][3]

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

    For $j = 0 To 2 ; Array generieren
    For $i = 0 to 2
    $avArray[$j][$i] = Random(1, 20000, 1)
    Next
    Next

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

    $string = ''
    For $j = 0 To 2 ; Array To String
    For $i = 0 to 2
    $string &= $avArray[$j][$i] & @TAB
    Next
    $string &= @CRLF
    Next

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

    MsgBox(0, "Test", $string)

    [/autoit]
    • Offizieller Beitrag

    In einem Label?
    Naja, egal - so gehts:

    [autoit]

    Global $Array[3][3] = [['a','b','c'],['d','e','f'],['g','h','i']], $str = '', $trenn = ';'

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

    For $i = 0 To UBound($Array) -1
    For $j = 0 To UBound($Array, 2) -1
    $str &= $Array[$i][$j] & $trenn
    Next
    Next
    $str = StringTrimRight($str, 1) ; letztes Trennzeichen wieder abschneiden

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

    ConsoleWrite($str & @CRLF) ; oder halt: GUICtrlSetData($Label, $str)

    [/autoit]


    :D - Mal wieder alle auf einen Schlag.

  • Besten Dank wie immer an die 3 von der Tankstelle :) /bow

    ich dachte es geht "einfacher"

    ich bastel das mal in meine TicTacToe engine mit ein :thumbup:

    muchas gracias :D

    Zitat

    Laughing Man

    "I thought, what I'd do was, I'd pretend I was one of those deaf-mutes"

    • Offizieller Beitrag

    OK, ich bin so frei und spendier dir mal 'ne Funktion dafür. Arbeitet mit 1D und 2D Arrays.
    Dann hast du nur noch eine Codezeile :P

    _Array2DToString()
    [autoit]

    Global $Array[3][3] = [['a','b','c'],['d','e','f'],['g','h','i']]
    ;~ Global $Array[5] = [1,2,3,4,5]

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

    ConsoleWrite(_Array2DToString($Array, ';') & @CRLF)

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

    ;==================================================================================================
    ; Function Name: _Array2DToString(ByRef $avArray, $sDelim [, $iRowStart=-1 [, $iRowEnd=-1 [, $iColStart=-1 [, $iColEnd=-1]]]])
    ; Description:: Gibt einen String zurück mit allen Elementen des angegebenen Bereiches
    ; aus einem 1D- oder 2D-Array
    ; Parameter(s): $avArray Das Array, das in einen String konvertiert werden soll
    ; $sDelim Das Trennzeichen zwischen den Elementen
    ; Für alle optionalen Parameter wird mit "-1" der Standardwert gesetzt
    ; optional: $iRowStart Die Zeile ab der konvertiert werden soll, Standard: ab Index 0
    ; optional: $iRowEnd Die Zeile bis zu der konvertiert werden soll, Standard: letztes Element
    ; optional: $iColStart Die Spalte ab der konvertiert werden soll, Standard: ab Index 0
    ; optional: $iColEnd Die Spalte bis zu der konvertiert werden soll, Standard: letzte Spalte
    ; Return Value(s): Erfolg Konvertierter String
    ; Fehler 1 und @error 1 - kein Array übergeben
    ; 2 - StartIndex falsch
    ; Author(s): BugFix
    ;==================================================================================================
    Func _Array2DToString(ByRef $avArray, $sDelim, $iRowStart=-1, $iRowEnd=-1, $iColStart=-1, $iColEnd=-1)
    If Not IsArray($avArray) Then Return SetError(1,0,1)
    If ($iRowStart < -1) Or ($iColStart < -1) Then Return SetError(2,0,1)
    Local $ub2nd = UBound($avArray, 2)
    Local $strOut = ''
    If $iRowStart = -1 Then $iRowStart = 0
    If $iRowEnd = -1 Then $iRowEnd = UBound($avArray) -1
    Switch $ub2nd
    Case 0
    If $iRowEnd > UBound($avArray) -1 Then $iRowEnd = UBound($avArray) -1
    For $i = $iRowStart To $iRowEnd
    If $i = $iRowEnd Then
    $strOut &= $avArray[$i]
    Else
    $strOut &= $avArray[$i] & $sDelim
    EndIf
    Next
    Case Else
    If $iRowEnd > $ub2nd -1 Then $iRowEnd = $ub2nd -1
    If $iColStart = -1 Then $iColStart = 0
    If $iColEnd = -1 Then $iColEnd = $ub2nd -1
    For $i = $iRowStart To $iRowEnd
    For $j = $iColStart To $iColEnd
    If $i = $iRowEnd And $j = $iColEnd Then
    $strOut &= $avArray[$i][$j]
    Else
    $strOut &= $avArray[$i][$j] & $sDelim
    EndIf
    Next
    Next
    EndSwitch
    Return $strOut
    EndFunc ;==>_Array2DToString

    [/autoit]