Bitte um Array Hilfe

  • Hallo zusammen
    Habe versucht ein Array-Script zu erstellen, bin der Meinung dass nun die Daten aus dem INI gelesen werden und im Auswahl GUI ersichtlich sein sollten.
    Dies ist aber nicht der Fall, Bitte um Hilfe "glug glug glug"
    MC

    Spoiler anzeigen
    [autoit]

    #include<array.au3>
    Opt('MustDeclareVars', 1)
    ArrayMuster()
    Func ArrayMuster()
    Global $aIni, $nMsg, $GUI_EVENT_CLOSE

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

    Global $sFilename = "C:\Dokumente und Einstellungen\Administrator\Desktop\autoit\muster.ini"
    Global $MengenCombo[3]
    Global $Sektionen[3] = ["HostName", "Schluessel", "Muster"]
    GUICreate ("GUI",250, 250)
    GuiCtrlCreateLabel("HostName ", 60, 10)
    $MengenCombo[0] = GUICtrlCreateCombo("", 60, 30)

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

    GuiCtrlCreateLabel("Schluessel ", 60, 70)
    $MengenCombo[1] = GUICtrlCreateCombo("", 60, 88)

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

    GuiCtrlCreateLabel("Muster ", 60, 130)
    $MengenCombo[2] = GUICtrlCreateCombo("", 60, 150)
    GUISetState()
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    EndSwitch

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

    If Not FileExists($sFilename) Then ; Neu zur Überprüfung hinzu
    MsgBox(0, "Test", "Ini-Datei existiert nicht.")
    Exit
    EndIf
    WEnd

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

    While 1
    $aIni = IniReadSection($sFilename, $Sektionen[0])
    For $i = 1 To $aIni[0][0]
    GUICtrlSetData($MengenCombo[0], $aIni[$i][1])
    Next
    WEnd
    EndFunc

    [/autoit]

    Muster.ini

    Spoiler anzeigen
    [autoit]


    [hostname]
    1=Markus
    2=Claudio
    3=Elvis
    4=David
    [Muster]
    1=A_Gruppe
    2=B_Gruppe
    3=C_Gruppe
    4=D_Gruppe
    [Schluessel]
    SchluesselA=1
    SchluesselB=2
    SchluesselC=3
    SchluesselD=4
    SchluesselE=5
    SchluesselF=6

    [/autoit]

    2 Mal editiert, zuletzt von mauric (9. Juli 2010 um 11:50)

  • versuch's mal mehr so ...

    Spoiler anzeigen
    [autoit]


    #include<array.au3>
    Opt('MustDeclareVars', 1)
    ArrayMuster()
    Func ArrayMuster()
    Global $aIni, $nMsg, $GUI_EVENT_CLOSE
    Global $sFilename = "C:\Dokumente und Einstellungen\Administrator\Desktop\autoit\muster.ini"
    Global $MengenCombo[3]
    Global $Sektionen[3] = ["HostName", "Schluessel", "Muster"]
    GUICreate("GUI", 250, 250)
    GUICtrlCreateLabel("HostName ", 60, 10)
    $MengenCombo[0] = GUICtrlCreateCombo("", 60, 30)
    GUICtrlCreateLabel("Schluessel ", 60, 70)
    $MengenCombo[1] = GUICtrlCreateCombo("", 60, 88)
    GUICtrlCreateLabel("Muster ", 60, 130)
    $MengenCombo[2] = GUICtrlCreateCombo("", 60, 150)
    GUISetState()
    $aIni = IniReadSection($sFilename, $Sektionen[0])

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

    For $i = 1 To $aIni[0][0]
    GUICtrlSetData($MengenCombo[0], $aIni[$i][1])
    Next

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    EndSwitch
    If Not FileExists($sFilename) Then ; Neu zur Überprüfung hinzu
    MsgBox(0, "Test", "Ini-Datei existiert nicht.")
    Exit
    EndIf
    WEnd
    EndFunc ;==>ArrayMuster

    [/autoit]
  • Danke Ideas2Code

    Aber nun ist nur die erste Auswahl "hostname" befüllt, die restlichen Auswahlmenüs "Schluessel" und "Muster" sind immer noch leer!.

    Danke für die weiteren infos.

    MC

  • Spoiler anzeigen
    [autoit]


    #include<array.au3>
    Opt('MustDeclareVars', 1)
    ArrayMuster()
    Func ArrayMuster()
    Global $aIni, $nMsg, $GUI_EVENT_CLOSE
    Global $sFilename = "C:\Dokumente und Einstellungen\Administrator\Desktop\autoit\muster.ini"
    Global $MengenCombo[3]
    Global $Sektionen[3] = ["HostName", "Schluessel", "Muster"]
    GUICreate("GUI", 250, 250)
    GUICtrlCreateLabel("HostName ", 60, 10)
    $MengenCombo[0] = GUICtrlCreateCombo("", 60, 30)
    GUICtrlCreateLabel("Schluessel ", 60, 70)
    $MengenCombo[1] = GUICtrlCreateCombo("", 60, 88)
    GUICtrlCreateLabel("Muster ", 60, 130)
    $MengenCombo[2] = GUICtrlCreateCombo("", 60, 150)
    GUISetState()
    If Not FileExists($sFilename) Then ; Neu zur Überprüfung hinzu
    MsgBox(0, "Test", "Ini-Datei existiert nicht.")
    Exit
    EndIf
    $aIni = IniReadSection($sFilename, $Sektionen[0])

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

    For $i = 0 To UBound($MengenCombo) - 1
    For $j = 1 To $aIni[0][0]
    GUICtrlSetData($MengenCombo[$i], $aIni[$j][1])
    Next
    Next

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    EndSwitch
    WEnd
    EndFunc ;==>ArrayMuster

    [/autoit]
  • Entschuldige wenn ich nochmals komme, aber nun habe ich die erste Sektion in allen drei felder gleich.
    Hmm ich machs sicher nicht extra, würde es auch sicher genauer verstehen wollen, Bitte nicht einfach die lösung hin "pasten"

    Habe gesehen hier kann ich die Sektion wählen, wie kann ich dies aber für die drei auswahl felder verteilen.

    Spoiler anzeigen
    [autoit]

    $aIni = IniReadSection($sFilename, $Sektionen[2])
    MsgBox(1,"" ,$Sektionen[2])

    [/autoit]


    Danke

  • Entschuldige, ich hab vergesen die IniReadSection()-Zeile in die FOR_Schleife zu ziehen.

    Spoiler anzeigen
    [autoit]


    #include<array.au3>
    Opt('MustDeclareVars', 1)
    ArrayMuster()
    Func ArrayMuster()
    Global $aIni, $nMsg, $GUI_EVENT_CLOSE
    Global $sFilename = "C:\Dokumente und Einstellungen\Administrator\Desktop\autoit\muster.ini"
    Global $MengenCombo[3]
    Global $Sektionen[3] = ["HostName", "Schluessel", "Muster"]
    GUICreate("GUI", 250, 250)
    GUICtrlCreateLabel("HostName ", 60, 10)
    $MengenCombo[0] = GUICtrlCreateCombo("", 60, 30)
    GUICtrlCreateLabel("Schluessel ", 60, 70)
    $MengenCombo[1] = GUICtrlCreateCombo("", 60, 88)
    GUICtrlCreateLabel("Muster ", 60, 130)
    $MengenCombo[2] = GUICtrlCreateCombo("", 60, 150)
    GUISetState()
    If Not FileExists($sFilename) Then ; Neu zur Überprüfung hinzu
    MsgBox(0, "Test", "Ini-Datei existiert nicht.")
    Exit
    EndIf

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

    For $i = 0 To UBound($MengenCombo) - 1 ;für jede ComboBox in dem Array ->
    $aIni = IniReadSection($sFilename, $Sektionen[$i]) ;-> lese die dazugehörige Sektion in der INI. Der Sektionsname steht im Array Sektionen und hat den selben Index wie die dazugehörige ComboBox im Array MengenCombo ->
    For $j = 1 To $aIni[0][0] ;-> für jedes Arrayelement das aus der Sektion gelesen wird ->
    GUICtrlSetData($MengenCombo[$i], $aIni[$j][1]) ;-> erstelle einen Eintrag in der aktuellen ComboBox
    Next ;-> wieder zum Anfang und die nächste ComboBox abarbeiten.
    Next

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    EndSwitch
    WEnd
    EndFunc ;==>ArrayMuster

    [/autoit]


    Hab mal versucht es in den Kommentaren zu erklären.