Wie Array richtig befüllen?

  • Hallo ihr fleissigen Helfer,

    dies ist eine Frage an unsere Array-Kings.

    Folgende Situation:

    Auszug aus einem INI-File
    Code
    [Gruppennummern]
    Gruppe 1 =7337,7338
    Gruppe 2 =4156,4157,4158
    Gruppe 3 =3566,3567,3568
    Auszug aus dem Scriptcode
    [autoit]

    $infos = IniReadSection($ini,"Gruppennummern")
    For $i = 1 To $info1[0][0]
    $info2 = StringSplit($info1[$i][1], ",")
    If $i = 1 Then Global $anzahl_gruppe_1 = $info2[0]
    If $i = 2 Then Global $anzahl_gruppe_2 = $info2[0]
    If $i = 3 Then Global $anzahl_gruppe_3 = $info2[0]
    Next

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

    Global $nummern_gruppe_1[$anzahl_gruppe_1] = [7337,7338] ; Diese Arrays sollen mit den
    Global $nummern_gruppe_2[$anzahl_gruppe_2] = [4156,4157,4158] ; Daten aus dem INI-File so befüllt werden,
    Global $nummern_gruppe_3[$anzahl_gruppe_3] = [3566,3567,3568] ; dass die Arrays genau so funktionieren wie bisher.

    [/autoit]


    Die letzten 3 Zeilen des Scriptcodes muss ich aktuell häufiger verändern (Anzahl und Inhalt nach dem "=" Zeichen) und
    es nervt langsam gewaltig, dass ich dazu immer wieder in den Quellcode rein muss, das dann erst suchen, ändern und
    neu kompilieren muss.
    Bsp:

    [autoit]

    ;heute sieht solch ein Array so aus:
    Global $nummern_gruppe_1[$anzahl_gruppe_1] = [7337,7338]

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

    ;morgen jedoch kann es schon wieder SO aussehen:
    Global $nummern_gruppe_1[$anzahl_gruppe_1] = [7337,7338,7339,7340]

    [/autoit]


    Wie kann ich das so umsetzen, dass diese Arrays korrekt mit demn Daten aus der INI befüllt werden? ?(

    MfG Lottich

    PS: Ich hoffe, dass ich mich nicht schon wieder zum Ei mache, weil die Lösung so simpel ist, ich aber
    zu blöde bin diese zu sehen. :S

  • Du könntest es einfach so machen:

    [autoit]

    $info2 = StringSplit($info1[$i][1], ",", 2)
    If $i = 1 Then $nummern_gruppe_1 = $info2
    ;...

    [/autoit]


    Ab Zeile 8 kannst du dann alles weglassen, Global würde ich ganz an den Anfang setzen.
    Durch Flag 2 bei StringSplit entsteht das Array genau so wie du es brauchst, und die Größe musst du dann auch nicht mehr einzeln festlegen.

    Edit: $infos in Zeile 1 sollte $info1 heißen, oder?

  • Du kannst es auch so machen (wenns nur um das Einlessen einer Ini in ein Array geht)

    [autoit]


    #include <file.au3>
    #include <Array.au3>
    ;;~
    Global $IniSecName = 'Gruppennummern' ;Ini Sections Name
    Global $Ini[1] = [_FileCountLines(@ScriptDir & '\Deine_ini.ini')] ;Gibt die menge an Zeilen von 'Deine_ini.ini' zurück
    ;;~
    For $i = 1 To $Ini[0]-1
    _ArrayInsert($Ini,$i,IniRead('Deine_ini.ini',$IniSecName,'Gruppe ' & $i,''))
    Next
    _ArrayDisplay($Ini)

    [/autoit]


    Es gibt viele wege und mittel, ich arbeite gerne mit _ArrayInsert

    Greez
    Skilkor