Wrapper für Konsolenbefehl (MEGACommandline client)

  • Hallo Leute :D

    habe ein kleines Problem:

    Spoiler anzeigen
    [autoit]

    RunWait(@ComSpec & " /c megals --reload", @ScriptDir)
    $items = Run(@ComSpec & " /c megals", @ScriptDir,@SW_HIDE, $STDOUT_CHILD)
    Sleep(350)
    $output = StdoutRead($items)
    $array = StringSplit($output,"/",1)
    For $ar In $array
    If IsNumber($ar) Or "" Then
    Else
    GUICtrlSetData($List1,"/"&$ar)
    EndIf
    Next

    [/autoit]

    Die Einträge werden Ausnahmslos alle gesplittet es sollte aber nach möglichkeit am ende so aussehen :

    Code
    Root
    Root/Datei1.png
    Root/Datei2.png
    Trash

    es sieht aber so aus :

    Code
    Root
    Root
    Root
    Root
    Trash
    Datei1.png
    Datei2.png

    Wie kann ich dies ändern?

    [autoit]


    #cs-----------------------------------------------------------------------------
    Hilfe ist immer gut also nimmt sie an ^^
    #ce-----------------------------------------------------------------------------

    [/autoit]
  • Hi,

    jetzt wissen wir, wie es nach dem Script aussieht und wie es aussehen soll, aber wie sieht es DAVOR aus, also dein Output?

    Gruß
    x0r

    Simon nörgelt, Simon nervt - aber Simon verbessert die Welt. Glaubt er.

  • Der Output ist ein einzelner String der inetwa so aussieht : /Contacts/Root/Trash/Mail/Root/Datei1.png/Root/Datei2.png

    [autoit]


    #cs-----------------------------------------------------------------------------
    Hilfe ist immer gut also nimmt sie an ^^
    #ce-----------------------------------------------------------------------------

    [/autoit]
  • so würde ich das auf die schnelle lösen, sollte auch leicht verständlich sein:

    [autoit]

    dim $str, $out, $split

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

    $str = "/Contacts/Root/Trash/Mail/Root/Datei1.png/Root/Datei2.png/Root/Datei3.jpeg"

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

    $split = StringSplit($str,"/")

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

    for $i = 1 to $split[0]
    if StringInStr($split[$i],".") and $i+1 < $split[0] Then
    $out &= $split[$i] & @CRLF & "/"
    Else
    $out &= $split[$i] & "/"
    EndIf
    Next

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

    $out = StringTrimRight($out,1)

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

    MsgBox(0,"",$out)

    [/autoit]

    Simon nörgelt, Simon nervt - aber Simon verbessert die Welt. Glaubt er.

  • Erstmal danke , Die Msgbox gibt den richtigen Inhalt aus.

    Jedoch wenn ich versuche das so in meine $List1 einzubinden :

    Spoiler anzeigen
    [autoit]


    For $ar = 1 To $array[0]
    if StringInStr($array[$ar],".") and $ar+1 < $array[0] Then
    ;~ GUICtrlSetData($List1,$ar&@CRLF&"/")
    $out &= $array[$ar] & @CRLF &"/"
    Else
    ;~ GUICtrlSetData($List1,$ar&"/")
    $out &= $array[$ar]&"/"
    EndIf
    ;~ $out &= $array[$ar]
    Next
    $out = StringTrimRight($out,1)
    ;~ MsgBox(0,"",$out)
    GUICtrlSetData($List1,$out)

    [/autoit]


    wird mir einfach ein einziger string angezeigt :
    [Blockierte Grafik: http://puu.sh/2PbYe.png][Blockierte Grafik: http://puu.sh/2PbZJ.png]

    PS: Kannst du mir mal genau erklären was genau

    [autoit]

    StringInStr($split[$i],".") and $i+1 < $split[0]

    [/autoit]

    macht?

    [autoit]


    #cs-----------------------------------------------------------------------------
    Hilfe ist immer gut also nimmt sie an ^^
    #ce-----------------------------------------------------------------------------

    [/autoit]
  • das prüft auf neuen pfad und macht einen zeilenumbruch rein...

    is das nicht ersichtlich?

    €dit: bzw auf dateiendung (".")

    Simon nörgelt, Simon nervt - aber Simon verbessert die Welt. Glaubt er.

  • zu mehr machst dir jetz aber bitte selbst gedanken, ok? :)

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <WindowsConstants.au3>

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

    $Form = GUICreate("Form", 324, 270, 192, 114)
    $List1 = GUICtrlCreateList("", 16, 16, 289, 240)
    GUISetState(@SW_SHOW)

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

    addlist()

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

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

    func addlist()
    Local $str, $out, $split

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

    $str = "/Contacts/Root/Trash/Mail/Root/Datei1.png/Root/Datei2.png/Root/test.jpeg"

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

    $split = StringSplit($str,"/")

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

    for $i = 1 to $split[0]
    if StringInStr($split[$i],".") and $i+1 < $split[0] Then
    $out &= $split[$i] & @CRLF & "/"
    Else
    $out &= $split[$i] & "/"
    EndIf
    Next

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

    $out = StringTrimRight($out,1)

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

    $out = StringSplit($out,@CRLF)

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

    for $i = 1 to $out[0]
    _GUICtrlListBox_AddString($List1, $out[$i])
    Next
    EndFunc

    [/autoit]

    Simon nörgelt, Simon nervt - aber Simon verbessert die Welt. Glaubt er.

  • Ich bin blöd, ich verzweifle seit 2 std daran die Listbox zu aktualisieren habs versucht so zu lösen

    Spoiler anzeigen
    [autoit]

    Func addtolist()
    GUICtrlDelete($List1)
    Sleep(1000)
    $List1 = GUICtrlCreateList("", 40, 24, 329, 253)
    Sleep(1000)
    RunWait(@ComSpec & " /c megals --reload");, @ScriptDir, @SW_HIDE)
    $items = Run(@ComSpec & " /c megals", @ScriptDir, "", $STDERR_CHILD + $STDOUT_CHILD)
    Sleep(450)
    $output = StdoutRead($items)
    $array = StringSplit($output, "/")
    For $ar = 1 To $array[0]
    If StringInStr($array[$ar], ".") And $ar + 1 < $array[0] Then
    $out &= $array[$ar] & @CRLF & "/"
    Else
    $out &= $array[$ar] & "/"
    EndIf
    Next
    $out = StringTrimRight($out, 1)
    $out = StringSplit($out, @CRLF)
    For $i = 1 To $out[0]
    If $out[$i] <> "" Then
    _GUICtrlListBox_AddString($List1, $out[$i])
    TrayTip("Structure found:",$out[$i],0.2)
    Sleep(200)
    EndIf
    Next
    EndFunc ;==>addtolist

    [/autoit]

    das bringt aber rein garnichts, wobei es logischerweise doch eigentlich gehen sollte, es tut nichts anderes als das alte objekt zu löschen und neu zu erstellen -.-

    PS: Wie krieg ich das hin, das bei AutoIt wieder die Alten Font-Farben sind wie damals?

    [autoit]


    #cs-----------------------------------------------------------------------------
    Hilfe ist immer gut also nimmt sie an ^^
    #ce-----------------------------------------------------------------------------

    [/autoit]

    Einmal editiert, zuletzt von johnnyboyy (8. Mai 2013 um 14:34)