Array mit Variabeln deklarieren

  • Hallo alle beisammen,


    ich möchte gerne ein Array deklarieren. Klappt wunderbar, nur wenn ich die Werte nun aus einer Ini auslese nicht mehr:


    [autoit]

    $iniOrte = IniReadSection(@ScriptDir & "\temp.ini", "Orte")
    For $t = 1 To $iniOrte[0][0]
    If $t = 1 Then
    $Werteset2 = $iniOrte[0][0]
    Else
    $Werteset2 &= ', "' & $iniOrte[$t][1] & '"'
    EndIf
    Next
    Global $aOrte[$iniOrte[0][0] + 1] = [$Werteset2]

    [/autoit]

    Ich habe es auch schon ohne die '"' ausprobiert, klappt auch nicht. Im Grunde stimmt der String ($Werteset2) ja, aber wahrscheinlich muss ich es so schreiben:

    Global $array[$X] = [$a, $b, $c] ?(

    Problem ist nur, dass x-beliebige Orte vorhanden sein können und ich nicht zich Variabeln per Hand eintragen möchte.

    Vielleicht habt ihr ja einen Tipp für mich, wie das funktioniert oder anders (besser?) geht? :)

    Vielen Dank

    Aquaplant

    Einmal editiert, zuletzt von Aquaplant (23. April 2010 um 10:30)

  • Kurze verständnissfrage:
    Wofür das ganze?
    Mir fallen viele gute Möglichkeiten ein das besser zu machen, und wenn du mir sagst was du genau vorhast, verrat ich dir vllt sogar die richtige :P

    Willst du 2 Arrays zusammenführen?
    Willst du einen Array im Array?
    Willst du einen Array kopieren?!
    uswusf.

  • Also, ich habe eine riesige Exceltabelle und lese mithilfe der Zeilen der Überschriften alle Orte unter der Überschrift aus. Falls der Ort dann noch nicht in der ini steht wird er reingeschrieben. Um jetzt alle Orte weiterzuverarbeiten brauche ich das Array mit der ersten Position (0) mit der Anzahl der Orte und danach alle Orte, die in der Ini stehen. Ich hoffe das war verständlich ausgedrückt.

  • Das geht auch, hab ich gar nicht dran gedacht. Hab mein Script jetzt noch abgeändert. Aber mit Arraysort läuft das jetzt nicht mehr - gibt es da eine Möglichkeit die anderweitig alphabetisch zu sortieren?

  • So kann man es auch machen:

    Spoiler anzeigen
    [autoit]

    #include<Array.au3>
    ;Global $aOrte = IniReadSection("Orte.ini", "Orte")
    ;If Not IsArray($aOrte) Then Global $aOrte[1][2] = [[0]]
    Global $aOrte[3][2] = [[1],["Ort1", "Hamburg"], ["Ort2", "Altdorf"]] ; Das Array zum Testen direkt erstellen

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

    Global $NeueOrte[3] = ["Stadt", "Dorf", "Altdorf"]

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

    For $i = 0 To UBound($NeueOrte)-1
    If _ArraySearch($aOrte, $NeueOrte[$i], 1, 0, 0, 0, 1, 1) = -1 Then
    $aOrte[0][0] += 1
    ReDim $aOrte[$aOrte[0][0]+1][2]
    $aOrte[$aOrte[0][0]][1] = $NeueOrte[$i]
    EndIf
    Next

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

    _ArraySort($aOrte, 0, 1, 0, 1)
    For $i = 1 To $aOrte[0][0] ; Neue Schlüssel für die INI erstellen
    $aOrte[$i][0] = "Ort" & $i
    Next

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

    _ArrayDisplay($aOrte)
    ;IniWriteSection("Orte.ini", "Orte", $aOrte, 1) ; wieder in Ini schreiben

    [/autoit]