Ini in Array einlesen

  • Hallo,

    ich habe gerade ein Problem. Ich weiß nicht genau wie ich es realisieren soll und brauche daher eure Hilfe. Ich habe eine Ini-Datei das folgendermaßen aufgebaut ist:

    [Section1]
    Eintrag1=145
    Eintrag2=564

    [Section2]
    Eintrag1=789
    Eintrag2=848

    Usw..

    Nun möchte ich mit IniReadSectionNames + IniReadSection alle Sections auslesen und z.b. unter dem section Section1 alle Einträge als 2D Array haben. Ich hab gelesen, das man mit AutoIt einen Array im Array erstellen kann. Weiß aber nicht genau wie das funktionieres soll. Kann mir jemand helfen? :)

    Danke im Voraus

  • Hallo
    Du meinst sicherlich mehrdimensionale Arrays. Bei Dir würde ein 2dimensionales reichen. Dies sieht ungefähr so aus.

    [autoit]

    Dim $array[10][2]

    [/autoit]


    Damit hast du 2 Spalten (Spalte 0 und 1) und 10 Zeilen (Zeile 0-9)weil das Array null basiert ist.
    Gruß Ralf

  • Hallo Deepred!

    Meinst du so?

    [autoit]


    #include<array.au3>

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

    Dim $var[10][3]
    dim $section[10][2]

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

    $section = IniReadSectionNames("Deine.ini")

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

    for $i = 1 to $section[0]
    $var[$i][0] = $section[$i]
    $var[$i][1] = iniread("Deine.ini", $section[$i], "Eintrag1", "Fehler")
    $var[$i][2] = iniread("Deine.ini", $section[$i], "Eintrag2", "Fehler")
    Next

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

    _arraydisplay($var)

    [/autoit]

    in der 1. Spalte steht der Sectionname, in der 2. Spalte der Eintrag1 und in der 3. Spalte steht dann Eintrag2

    Liebe Grüße
    Elodie

  • Danke Elodie. Ich habs mal etwas erweitert und dabei ist da shier herausgekommen:

    [autoit]

    Dim $Ini[1][1][1]

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

    $Path = @ScriptDir & "\Inhalt.ini"

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

    $SectionNames = IniReadSectionNames($Path)

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

    For $Loop_1 = 1 To $SectionNames[0]

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

    $Section = IniReadSection($Path, $SectionNames[$Loop_1])

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

    ReDim $Ini[1][2][1 + $Loop_1]

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

    For $Loop_2 = 1 To $Section[0][0]
    ReDim $Ini[1 + $Loop_2][1][1]
    $Ini[$Loop_1][0][0] = $Section[$Loop_2][0]
    $Ini[$Loop_1][1][0] = $Section[$Loop_2][1]
    Next
    Next

    [/autoit]

    Leider kommt dabei ein Error. Ich versteh das nicht mehr...

    Also Ich habs mir so vorgestellt:

    $Ini[1][1][1]
    ----1--2---3

    Unter der Nummer 3 sollen alle Section names stehen.
    Mit Nummer 2 soll man einstellen können, ob man die Keys oder die Values haben möchte.
    Und unter der 1 stehen dann die Werte von 2.

  • okay, also, ich würde das ganze nicht als 3Dimensonalen Array deklarieren, sondern nur als 2Dimensonalen Array.
    Also, aus Dim $Ini[1][1][1] ein Dim $Ini[1][1]

    dann muss man noch $section als Array deklarieren:
    Dim $section[10][3]

    Eventuell ist dies dein Denkfehler:
    die Zeile des Arrays ist die erste Zahl in den [] ist
    die Spalte ist die zweite Zahl in den []
    also, ein 2Dimensonaler Array ist wie eine Excel-Tabelle, nur, dass die Spalten auch Zahlen sind und es auch eine Zelle 0|0 gibt :D
    Und ein 3 Dimensonaler Array müsste man sich wie einen Quader vorstellen :wacko:

    Liebe Grüße
    Elo

  • ohne direkt durchzublicken was du da machst, ubound ist dein Freund.
    Viele Fehler passieren durch das verkehrte einlesen, keine Daten mehr da etc

    Achtung Anfänger! :whistling:

    Betrachten des Quellcodes auf eigene Gefahr, bei Übelkeit,Erbrechen,Kopfschmerzen übernehme ich keine Haftung. 8o