Array verwenden ohne zu wissen, wieviele Indexnummern benötigt werden?

  • Hi,

    wenn man ein Array erstellen möchte und je nach Situation verschieden viele Indexnummern benötigt werden.
    Wie sollte man da am Besten vorgehen?

    Ich habe in der Hilfe die Funktion "_ArrayAdd" gefunden.
    Und würde das dann so einsetzen:

    [autoit]


    #include <Array.au3>

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

    Global $testarray[1] = ["null_wird_freigelassen"]

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

    _ArrayDisplay($testarray)
    _ArrayAdd($testarray, "*test* $Wert") ;~ Steckt dann eigentlich in einer For-Schleife mit IF-Bedingung. Soll ja nur ein kurzes Beispiel bleiben ;)
    _ArrayDisplay($testarray)

    [/autoit]

    Wäre das ok oder würdet ihr das auf eine andere Weise lösen?


    Gruß
    Tron

    2 Mal editiert, zuletzt von Tron (6. März 2011 um 11:13)

  • Hi,
    wenn du dein Array am Anfang des Scriptes mit einer unbekannten Anzahl von Werten füllen möchtest, würde ich den umgekehrten Weg gehen.
    Das Array überdimensionieren (z.B. 200000), dann in einer Schleife mit z.B. 87600 Werten füllen, und dann EINMAL ein Redim machen. Das ist wesentlich schneller, als 87600 mal zu ReDim-en.

    • Offizieller Beitrag

    Generell ist das Vorgehen ok, wenn aber sehr viele neue Elemente erstellt werden, ist dieses Verfahren (ReDim) relativ langsam.
    Es bietet sich dann an, erstmal alles in einen String zu packen und diesen am Ende der Schleife mit StringSplit zu splitten.
    Das hängt aber vom Verwendungszweck ab. Willst Du ein konkretes Problem lösen oder war die Frage allgemein gestellt?

  • Dankeschön für die schnellen Antworten. Echt top!
    Dann werde ich bei Gelegenheit mal beides testen.


    Zitat von Oscar


    Willst Du ein konkretes Problem lösen oder war die Frage allgemein gestellt?


    Nächste Woche könnte ich "vermutlich" so was gebrauchen.
    Wollte mich deshalb schon mal im Vorfeld etwas erkundigen... also eher allgemein :)

  • Wenns bisschen komplizierter sein darf, gibts z.B. auch SQLite.
    Wenn man nicht vorhersehen kann, wie viele Daten man speichern will, ist das recht elegant.

    Wer andern eine Bratwurst brät
    der hat ein Bratwurstbratgerät.

  • Für max. 50.000 Einträge wollte ich eigentlich Excel verwenden.
    Aber eine Datenbank wäre sicherlich was Feines.

    Das werde ich mir auf jeden Fall mal angucken.
    Besten Dank :)