Einlesen von Textzeilen und Splitstring in mehrdimensionales Array

  • Hallo ich bin neu hier im Forum, und auch relativ neu in der Programmiersprache Autoit.

    Ich habe ein Problem für eine Gui Werte aus einer Textdatei auszulesen und diese dann so zu splitten das ich sie dann bei erfassten Klick auf ein Element inerhalb der ListView_1 oder ListView_2 in ListView_3 einbinden kann. Das Einbinden der Werte in ListView_1 klappt, jedoch nur in Verbindung einer Schleife und Splitstring. Dabei ist mir aber nicht klar wie ich Splitstring so einsetzte das ich gleich die ganze gesplitete Zeile zu einem Array splitte und dann nachher explizit auch aufrufen und einbinden kann.

    Klick in Listview_ 1 or ListView_2 --> Schreibe eingelesene der angeklickten Zeile entsprechen als Info´s in ListView_3 als SubItem

    Die Textdate ist so aufgebaut(als Dilimeter gilt #):

    Spoiler anzeigen

    Acrobat Update an#Registry Eintrag#Intigriert#Ab Version 8
    Acrobat Update aus#Registry Eintrag#Intigriert#Ab Version 8
    Hosts-Einträge setzen#Hosts setzen#Intigriert#Englisch
    Office Add in Microsoft Math#Installtion#External#Deutsch,Engslisch,Spanisch
    Office Powerpoint pptPlex#Installtion#External#Englisch
    Office SaveAsPDForXPS#Installtion#External#Deutsch,Engslisch,Spanisch,Französisch


    Für Mehr Info´s siehe Kommentare im Script

    Spoiler anzeigen
    [autoit]

    #include <GuiConstants.au3>
    #include <GuiListView.au3>
    #include <GuiConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    #include <File.au3>
    #include <array.au3>

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

    #AutoIt3Wrapper_au3check_parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6

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

    #Region ### START Koda GUI section ### Form=g:\07_autoit\form2.kxf
    $Form2 = GUICreate("Konfigurationstool", 741, 296, 230, 339);Window Gui
    $Button1 = GUICtrlCreateButton(">", 188, 47, 30, 25, 0);Buttons
    $Button2 = GUICtrlCreateButton(">>", 188, 72, 31, 25, 0)
    $Button3 = GUICtrlCreateButton("<", 189, 121, 31, 25, 0)
    $Button4 = GUICtrlCreateButton("<<", 189, 146, 32, 25, 0)
    $Button5 = GUICtrlCreateButton("&Start", 472, 257, 75, 25, 0)
    $Button6 = GUICtrlCreateButton("&Info", 552, 257, 75, 25)
    $Button7 = GUICtrlCreateButton("&Beenden", 656, 257, 75, 25, 0)
    $ListView_1 = GUICtrlCreateListView("Action", 16, 40, 161, 142);ListView
    _GUICtrlListView_SetColumnWidth($ListView_1,0,157)
    GUICtrlSendMsg($ListView_1, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
    GUICtrlSendMsg($ListView_1, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
    $ListView_2= GUICtrlCreateListView("Action", 232, 40, 161, 142)
    _GUICtrlListView_SetColumnWidth($ListView_2,0,157)
    GUICtrlSendMsg($ListView_2, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
    GUICtrlSendMsg($ListView_2, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
    $ListView_3 = GUICtrlCreateListView("Infoart|Ergebnis", 416, 40, 313, 142)
    GUICtrlSendMsg(-1, 0x101E, 0, 105)
    GUICtrlSendMsg(-1, 0x101E, 1, 204)
    GUICtrlSendMsg($ListView_3, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)
    GUICtrlSendMsg($ListView_3, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_FULLROWSELECT, $LVS_EX_FULLROWSELECT)
    GUICtrlCreateListViewItem("Prozedur", $ListView_3)
    GUICtrlCreateListViewItem("Art der Prozedur", $ListView_3)
    GUICtrlCreateListViewItem("Filepath", $ListView_3)
    GUICtrlCreateListViewItem("Sonst. Info", $ListView_3);ListView
    $Label1 = GUICtrlCreateLabel("Informationsbox", 416, 16, 113, 20);Label
    GUICtrlSetFont(-1, 11, 800, 0, "MS Sans Serif")
    $Label2 = GUICtrlCreateLabel("Wählbare Routinen", 16, 16, 136, 20)
    GUICtrlSetFont(-1, 11, 800, 0, "MS Sans Serif")
    $Label3 = GUICtrlCreateLabel("Auszuführende Routinen", 232, 16, 170, 20)
    GUICtrlSetFont(-1, 11, 800, 0, "MS Sans Serif")
    $Label4 = GUICtrlCreateLabel("Process...", 16, 200, 73, 20)
    GUICtrlSetFont(-1, 11, 800, 0, "MS Sans Serif")
    $Label5 = GUICtrlCreateLabel("Copyright by Alex", 8, 272, 85, 17)
    $Progress1 = GUICtrlCreateProgress(16, 224, 377, 25);Etc
    #EndRegion ### END Koda GUI section ###
    GUISetState()
    _GUICtrlListView_RegisterSortCallBack(GUICtrlGetHandle($ListView_1));Dient um die ListView zu sortieren
    _GUICtrlListView_RegisterSortCallBack(GUICtrlGetHandle($ListView_2));Dient um die ListView zu sortieren

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

    dim $prozedur
    DirCreate("C:\temp\")
    FileInstall("G:\Rollouttool\Installationen.ini","C:\temp\Installationen.txt",1)
    dim $ini=0

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

    _FileReadToArray("C:\temp\Installationen.txt",$prozedur); alternativ für auch iniread gehen Problem stellt sich in dem Array
    ; Hier sollte die Datei eingelesen werden und in ein zweidimensionales Array geschrieben werden
    ; damit ich es wie in Zeile 83f gezeigt einfügen kann

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

    While 1
    $nMsg = GUIGetMsg()

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

    ;Infobox Wenn in der ListView_1 oder ListView_2 etwas angeklickt wird sollen zu diesen Element Info´s
    ; in der ListView_3 angezeigt werden

    $ListView_1_index = _GUICtrlListView_GetSelectionMark($ListView_1)
    $ListView_1_string = _GUICtrlListView_GetItemText($ListView_1, $ListView_1_index)

    if $ini=0 then ; Erste Inizialisierung beim nach ersten Klick

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

    $ListView_1_index_compare=$ListView_1_string
    $ListView_1_string = _GUICtrlListView_GetItemText($ListView_1, $ListView_1_index)
    $ini=1
    EndIf
    ;Wenn der angeklickte Wert sich änderst wir das hiermit registriert
    if $ListView_1_string = $ListView_1_index_compare then
    else
    $ListView_1_string = _GUICtrlListView_GetItemText($ListView_1, $ListView_1_index)
    $ListView_1_index_compare=$ListView_1_string
    ;Hier soll dann auch das eingelese Array eingefügt werden in Listview_3
    ;~ _GUICtrlListView_AddSubItem($ListView_3,0,$ListView_1_string,1)
    EndIf

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

    Switch $nMsg ; --> Dieser Teil funktioniert wie gewollt

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

    Case $Button1

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

    $ListView_1_index = _GUICtrlListView_GetSelectionMark($ListView_1)
    $ListView_1_string = _GUICtrlListView_GetItemText($ListView_1, $ListView_1_index)
    $ListView_1_exists =_GUICtrlListView_FindText($ListView_2, $ListView_1_string)
    if $ListView_1_exists = -1 then
    GUICtrlCreateListViewItem($ListView_1_string,$ListView_2)
    EndIf

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

    Case $Button2

    $ListView_1_count = _GUICtrlListView_GetItemCount($ListView_1)

    for $i = 0 to $ListView_1_count
    $ListView_1_string = _GUICtrlListView_GetItemText($ListView_1, $i)

    $ListView_2_exists =_GUICtrlListview_Findtext($ListView_2, $ListView_1_string)


    if $ListView_2_exists = -1 then
    GUICtrlCreateListViewItem($ListView_1_string,$ListView_2)
    EndIf

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

    Next

    Case $Button3

    $ListView_2_index = _GUICtrlListView_GetSelectionMark($ListView_2)
    $ListView_2_string = _GUICtrlListView_GetItemText($ListView_2, $ListView_2_index)

    $ListView_2_exists =_GUICtrlListview_Findtext($ListView_1, $ListView_2_string)

    if $ListView_2_exists = -1 then
    GUICtrlCreateListViewItem($ListView_2_string,$ListView_1)
    EndIf
    Sleep(100)
    _GUICtrlListView_DeleteItem($ListView_2,$ListView_2_index)

    Case $Button4

    $ListView_2_count = _GUICtrlListView_GetItemCount($ListView_2)
    for $i = 0 to $ListView_2_count
    _GUICtrlListView_DeleteAllItems($ListView_2)
    Next

    Case $Button6
    MsgBox(0,"Info","Wie funktioniert dieses Programm?"&@CRLF&"1.Element auswählen"&@CRLF&"2.Mit Hilfe der Pfeile auf die Rechte Seite bringen"&@CRLF&"3.Programm mit (Start) starten und die ausgewählten Installationsroutinen werden installiert")

    Case $Button7
    $abbruch = MsgBox(1,"Beenden","Wollen sie das Programm wirklich beeenden?")
    if $abbruch = 1 Then
    $GUI_EVENT_CLOSE
    Exit
    EndIf

    Case $GUI_EVENT_CLOSE
    _GUICtrlListView_UnRegisterSortCallBack(GUICtrlGetHandle($ListView_1));Dient um die ListView zu sortieren
    _GUICtrlListView_UnRegisterSortCallBack(GUICtrlGetHandle($ListView_2));Dient um die ListView zu sortieren

    Exit

    Case $ListView_1
    _GUICtrlListView_SortItems($ListView_1, GUICtrlGetState($ListView_1));Dient um die ListView zu sortieren

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


    Case $ListView_2
    _GUICtrlListView_SortItems($ListView_2, GUICtrlGetState($ListView_2));Dient um die ListView zu sortieren

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

    EndSwitch ;--> Dieser Teil funktioniert wie gewollt
    WEnd

    [/autoit]