Brauche Hilfe bei IniRead-TreeView Realisierung

  • Hallo Ihr.

    Also ich habe folgendes Problem. Ich habe eine Ini-Datei, in die nach AutoIt-Format

    [SektionsName]
    Schlüssel=Wert

    Daten geschrieben werden. Die Anzahl der Sektionen ist in meinem Fall variabel, die Schlüssel mit den Werten dagegen konstant in jeder Sektion.
    Ich möchte die gespeicherten Daten jetzt in einer GUI in der TreeView Ansicht ausgeben lassen. Da beginnt dann mein Problem...

    Mein bisheriger Versuch war folgender:

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

    Opt("GUICoordMode", 1)

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

    $Form1 = GUICreate("Form1", 301, 454, 192, 124)
    $TreeView1 = GUICtrlCreateTreeView(8, 216, 281, 169)
    $daten = IniReadSectionNames("daten.ini")
    For $i = 1 To $daten[0]
    $daten1 = IniReadSection("daten.ini", $daten[$i])
    Assign ( "TreeView" & $i & "_0", GUICtrlCreateTreeViewItem ( $daten[$i], $TreeView1 ), 2 )
    Assign ( "TreeView" & $i & "_1", GUICtrlCreateTreeViewItem ( $daten1[1][0], $TreeView1_0 ), 2 )
    Assign ( "TreeView" & $i & "_2", GUICtrlCreateTreeViewItem ( $daten1[1][1], $TreeView1_0 ), 2 )
    Assign ( "TreeView" & $i & "_3", GUICtrlCreateTreeViewItem ( $daten1[2][1], $TreeView1_0 ), 2 )
    Assign ( "TreeView" & $i & "_4", GUICtrlCreateTreeViewItem ( $daten1[3][1], $TreeView1_0 ), 2 )
    Assign ( "TreeView" & $i & "_5", GUICtrlCreateTreeViewItem ( $daten1[4][1], $TreeView1_0 ), 2 )
    Assign ( "TreeView" & $i & "_6", GUICtrlCreateTreeViewItem ( $daten1[5][1], $TreeView1_0 ), 2 )
    Next

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

    GUISetState(@SW_SHOW)

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

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

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

    Mein Problem ist jetzt, dass alle Einträge aus der Ini-Datei in der TreeView der ersten Sektion zugeordnet werden und nicht wie geplant jede Sektion getrennt für sich. Der Fehler liegt hier in der festen Übergabe der Variable $TreeView1_0... Ich weiss jetzt aber nicht, wie ich das anders lösen könnte. Rein theoretisch müsste ich ja die Variable $TreeView{$i}_0 als Parameter übergeben, nur wie das funktioniert habe ich leider nicht rausfinden können...

    Vielleicht kennt Ihr ja noch einen anderen Lösungsansatz, der evtl. sogar einfacher ist. Würde mich jedenfalls freuen, wenn mir da jemand helfen könnte!

    Liebe Grüße
    Darius83

    Einmal editiert, zuletzt von darius83 (13. September 2009 um 17:55)

  • Öhm danke Tobi für den Hinweis, aber ich sehe da iwie keinen Unterschied...
    Wenn ich auf deinen Link klicke komme ich immer wieder hier an ;)
    Ich finde sowieso, das das Forum hier ein wenig merkwürdig aufgebaut ist ^^
    Wo befindet sich mein Post denn überhaupt? XD

  • Hey habe mich mal veruscht obwohl ich noch keine ahnung habe!


    ICh habe ein wenig rumgespielt hin bekommen habe ich es auch nicht aber die gui läst sich jetzt anzeigen also das fenster erscheit schon mal mit einer ausklapbaren liete nur liestet er nichts auf.


    Mußt ein wenig spielen so weit wie das jetz ist hast du es fast gesachaft!


    [autoit]

    #include <GUIConstants.au3> ; <<<<<-------- einmal
    Opt("GUICoordMode", 1)
    $Form1 = GUICreate("Form1", 301, 454, 192, 124)
    $TreeView1 = GUICtrlCreateTreeView(8, 216, 281, 169)
    $daten = IniReadSectionNames("daten.ini")
    For $i = 1 To $daten ; <<<<<<<<<------ zweimal [] entfernt
    $daten1 = IniReadSection("daten.ini", $daten)
    Assign ( "TreeView" & $i & "_0", GUICtrlCreateTreeViewItem ( "Daten.ini", $TreeView1 ), 2 );--------
    Assign ( "TreeView" & $i & "_1", GUICtrlCreateTreeViewItem ( $daten1, $TreeView1_0 ), 2 ) ;
    Assign ( "TreeView" & $i & "_2", GUICtrlCreateTreeViewItem ( $daten1, $TreeView1_0 ), 2 ) ;
    Assign ( "TreeView" & $i & "_3", GUICtrlCreateTreeViewItem ( $daten1, $TreeView1_0 ), 2 ) ;---- überal [] entfernt
    Assign ( "TreeView" & $i & "_4", GUICtrlCreateTreeViewItem ( $daten1, $TreeView1_0 ), 2 ) ;
    Assign ( "TreeView" & $i & "_5", GUICtrlCreateTreeViewItem ( $daten1, $TreeView1_0 ), 2 ) ;
    Assign ( "TreeView" & $i & "_6", GUICtrlCreateTreeViewItem ( $daten1, $TreeView1_0 ), 2 );----------
    Next
    GUISetState(@SW_SHOW)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]


    LG Kleiner

  • Hallo darius83,

    schau dir mal dieses kleine Skript an:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>

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

    Global $hchildSek[10]
    $Form1 = GUICreate("Form1", 301, 454, 192, 124)
    $TreeView1 = GUICtrlCreateTreeView(8, 216, 281, 169)

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

    $var = IniReadSectionNames(@DesktopDir & "\AutoIt-Test.ini")
    If @error Then
    MsgBox(4096, "", "Error occurred, probably no INI file.")
    Else
    For $i = 1 To $var[0]
    $hchildSek[$i] = GUICtrlCreateTreeViewItem($var[$i], $TreeView1)
    $var2 = IniReadSection(@DesktopDir & "\AutoIt-Test.ini", $var[$i])
    If Not @error Then
    For $j = 1 To $var2[0][0]
    GUICtrlCreateTreeViewItem($var2[$j][1], $hchildSek[$i])
    Next
    EndIf
    Next
    EndIf
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    Sleep(100)
    WEnd

    [/autoit]

    Die Ini-Datei habe ich mit dem Beispiel zu IniWriteSection erzeugt,

    mfg (Auto)Bert

    Einmal editiert, zuletzt von AutoBert (12. September 2009 um 18:14)

  • Hah danke AutoBert die For-Schleife mit dem $j war das, was mir noch gefehlt hat, den anderen Teil hatte ich auch schon soweit umgebaut ;)
    Funktioniert jetzt wunderbar ;) Vielen Dank!!!