_Arraydisplay

  • Hallo,

    ich habe folgendes Problem mit Arraydisplay:
    Ich habe eine RegEx Suche mit 3 Ergebnissen (Klappt alles soweit)

    Wie kann ich diese Ergebnisse mit _ArrayDisplay in 3 Spalten darstellen?

    CodeBeispiel

    [autoit]


    $aResult = StringRegExp($HTML,'class=(.*?)"\s.*?">(.*?)</b>\.(.*?)>>',3)
    _Arraydisplay($aResult); zeigt alles in einer Spalte an
    (.*?) das sind die Ergebnisse

    [/autoit]


    _Arraydisplay($aResult) ; also alles in einer Zeile

    Habe auch mit einem Loop probiert

    [autoit]


    for $i = 0 to UBound($aResult) -1 Step 3
    ;komme da nicht weiter
    next

    [/autoit]


    Sieht also so aus
    _Arraydisplay

    Spoiler anzeigen


    1. Ergebnis 1
    2. Ergebnis 2
    3. Ergebnis 3

    _ArrayDisplay sollte aber so aussehen

    Spoiler anzeigen


    1. Ergebnis 2. Ergebnis 3. Ergebnis

    Eine Idee?
    ;) Ilse

    2 Mal editiert, zuletzt von Ilse (9. Februar 2012 um 12:18)

  • Hallo Ilse,

    _ArrayDisplay stellt das Array immer so dar wie es ist. Du hats ein 1D Array mit 3 Zeilen und einer Spalte möchtest aber die Ausgabe in einer Zeile und 3 Spalten, daher must du aus dem 1D-Array zuerst ein 2D Array machen. Das man dafür sinnvller weise eine For...Next-Schleife nimm ist richtig, bin allerdings entäuscht das du den Aufbau nicht allein hin bekmmst.

    Nur spicken wenn kein Ehrgeiz
    [autoit]


    ;$a1D = dein jetziges Array
    ;$a2D = dein Wunsch- Array
    _ArrayDisplay($a1d,"So sieht dein Arrayaufbau aus")
    $iRows = int((UBound($a1d)-1)/3) +1
    ConsoleWrite($iRows & @CRLF)
    dim $a2D[$iRows][3]

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

    $j=0
    for $i = 0 To UBound($a1d) -1 Step 3
    ConsoleWrite($i & @TAB)
    $a2D[$j][0] = $a1d[$i]
    $a2D[$j][1] = $a1d[$i+1]
    $a2D[$j][2] = $a1d[$i+2]
    $j += 1
    Next
    _ArrayDisplay($a2D,"So soll es angezeigt werden")

    [/autoit]

    mfg autoBert

  • Hatte dafür auch mal ne Funktion geschrieben... Wem sie nützt...

    Spoiler anzeigen
    [autoit]


    ; ...
    $aResult = _RegExp($HTML,'class=(.*?)"\s.*?">(.*?)</b>\.(.*?)>>')
    _Arraydisplay($aResult)
    ; ...

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

    Func _RegExp($sTest, $sPattern, $iOffset = 0)
    Local $aRet, $iUB, $iUB2, $aDummy, $aNewArr
    $aRet = StringRegExp($sTest, $sPattern, 4, $iOffset)
    If @error Then Return

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

    Local $iUB = UBound($aRet), $iUB2 = UBound($aRet[0]), $aNewArr[$iUB][$iUB2 - 1]
    For $i = 0 To $iUB - 1
    Local $aDummy = $aRet[$i], $iUBD = UBound($aDummy)

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

    If $iUBD - 1 > $iUB2 Then
    $iUB2 = $iUBD
    ReDim $aNewArr[$iUB][$iUB2]
    EndIf
    For $j = 1 To $iUBD - 1
    $aNewArr[$i][$j - 1] = $aDummy[$j]
    Next
    Next
    Return $aNewArr
    EndFunc ;==>_RegExp

    [/autoit]
  • SEuBo,

    bin gerade an deiner Variante.
    Eine Frage:

    Bei den Variablen komme ich irgendwie nicht weiter.
    Wenn ich das ganze mit einer MsgBox ausgeben möchte,
    welche Variablen muß ich für die Spalten benutzen?

    Dein Code:

    [autoit]


    ; ...
    $aResult = _RegExp($HTML,'class=(.*?)"\s.*?">(.*?)</b>\.(.*?)>>')
    _Arraydisplay($aResult)
    ; ...

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

    Func _RegExp($sTest, $sPattern, $iOffset = 0)
    Local $aRet, $iUB, $iUB2, $aDummy, $aNewArr
    $aRet = StringRegExp($sTest, $sPattern, 4, $iOffset)
    If @error Then Return

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

    Local $iUB = UBound($aRet), $iUB2 = UBound($aRet[0]), $aNewArr[$iUB][$iUB2 - 1]
    For $i = 0 To $iUB - 1
    Local $aDummy = $aRet[$i], $iUBD = UBound($aDummy)

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

    If $iUBD - 1 > $iUB2 Then
    $iUB2 = $iUBD
    ReDim $aNewArr[$iUB][$iUB2]
    EndIf
    For $j = 1 To $iUBD - 1
    $aNewArr[$i][$j - 1] = $aDummy[$j]
    Next
    Next
    Return $aNewArr
    EndFunc ;==>_RegExp

    [/autoit]

    ;) Ilse