array to Clipput

  • hey,

    möchte gerne etwas in die zwischenablage kopieren und weiss nicht weiter??.

    führe die Funktion _clipfixed() aus.
    mein array wird sauber dargestellt:
    autoit.de/wcf/attachment/8863/

    Wie kann ich jetzt das in dem Format in die Zwischenablage hinzufügen.
    also ein Array to string ??


    [autoit]

    func _clipfixed()

    Global $array = _ExportListview($liste, 2, "Fixed")
    _ArrayDisplay($array)
    ClipPut($array)

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

    EndFunc

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

    Func _ExportListview($hListView, $subitem, $search)
    $liste = $hListView
    Local $count = _GUICtrlListView_GetItemCount($hListView)
    if @error then Return SetError(1,0,1)
    if $count=0 then Return SetError(1,0,2)
    Local $colcount = _GUICtrlListView_GetColumnCount($hListView)
    Local $aret[$count][$colcount] ;2D Rückgabearray
    Local $atext, $counter = 0

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

    For $i = 0 To $count - 1 ;loop durch die Items
    $atext = _GUICtrlListView_GetItemTextArray($hListView, $i)
    ;_arraydisplay($atext)
    If $atext[$subitem + 1] = $search Then ; bei gefunden Searchstring im bezeichneten Subitem
    For $x = 1 To $atext[0] ;loop durchs Array der Subitems
    $aret[$counter][$x - 1] = $atext[$x] ; "D Rückgabearray befüllen
    Next
    ;_arraydisplay($aret)
    $counter += 1
    EndIf
    Next
    if $counter = 0 then Return SetError(1,0,3)
    ReDim $aret[$counter][$colcount]

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

    Return $aret

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

    EndFunc

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

    Dateien

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

    Einmal editiert, zuletzt von subzero007 (12. April 2010 um 19:43)

  • Array in einen String wandeln.
    Du bist da relativ frei was die Darstellung angeht. Z.b. könntest du die Elemente der 1. Dimension mit einem Zeilenumbruch trennen und die der 2. mit @Tab oder einem '|'.
    Aber wie gesagt: In einen String wandeln und dann Clipput da die Zwischenablage mit AutoIt-Arrays nichts anfangen kann.

  • Spoiler anzeigen
    [autoit]

    Func _ArrayToString2D(Const ByRef $aArray,$sDelim = "|")
    Local $sRet
    For $i = 0 To UBound($aArray,1)-1
    For $j = 0 To UBound($aArray,2)-1
    $sRet &= $aArray[$i][$j] & $sDelim
    Next
    $sRet = StringTrimRight($sRet,StringLen($sDelim)) & @CRLF
    Next
    $sRet = StringTrimRight($sRet,2)
    Return $sRet
    EndFunc

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

    Func _ArrayFromString2D($sString, $sDelim = "|")
    Local $aSplit, $aRow, $aRet[1000][50], $ihs, $ivs
    $aSplit = StringSplit($sString,@CRLF,3)
    For $i = 0 To UBound($aSplit)-1
    If $i = UBound($aRet,1)-1 Then ReDim $aRet[UBound($aRet,1)+1000][UBound($aRet,2)]
    If $i > $ivs Then $ivs = $i
    $aRow = StringSplit($aSplit[$i],$sDelim,3)
    For $j = 0 To UBound($aRow)-1
    If $j = UBound($aRet,2)-1 Then ReDim $aRet[UBound($aRet,1)][UBound($aRet,2)+100]
    If $j > $ihs Then $ihs = $j
    $aRet[$i][$j] = $aRow[$j]
    Next
    Next
    ReDim $aRet[$ivs+1][$ihs+1]
    Return $aRet
    EndFunc

    [/autoit]
    [autoit]

    ClipPut(_ArrayToString2D($aArray))

    [/autoit]