Array-Problem bei Auslesen

  • Hallo ihr,
    ich bin's mal wieder :P ...

    Ich hab gerade so ein Problem mit Arrays. Dort habe ich mehrsprachig die Pfade, Namen und Beschreibungen auf Deutsch/Englisch gespeichert. Allerdings habe ich da so ein Problem beim Auslesen. Komischerweise zeigt sich da immer der im Array zuletzt definierte Eintrag. ?(
    Irgendwie bin ich zu dumm den Fehler zu finden, vielleicht schafft's ja wer von euch. :D

    Vielen Dank im Voraus!
    olfibits

    neben AutoIt jetzt auch noch in C/C++, Java und Python aktiv :)
    Stand 04.04.2018, 13:34

  • Du verwendest ein Array und versuchst die Indizes wie in PHP mit Strings anzusprechen. Das ist in AutoIt nicht möglich.
    Strings in AutoIt haben den Wert 0, weshalb du auch immer den letzten Eintrag überschreibst. Du schreibst andauernd in [0][0][0].

    Du kannst das Objekt Scripting.Dictionary verwenden um einen Eintrag für einen bestimmten Schlüssel zu bekommen.
    Das wäre praktisch ein 1D-Array mit Zugriff via Strings.

    Allerdings hast du in AutoIt auch die Möglichkeit Enumeratoren zu definieren die wie Indizes arbeiten aber in "Stringform" vorkommen.
    Dies bringt die Illusion mit Strings den Arrayindex anzusprechen obwohl die Enums im Hintergrund wie ganz normale Zahlen arbeiten.

    Mit Local Enum $CalUI = 1, $Fileman kannst du Enumeratoren definieren. Standardwert ist 0 und du kannst das = 1 weglassen wenn der 1. Wert 0 ist.
    Die restlichen dahinter sind immer um genau eins inkrementiert.

    Ich hab dein Script mal umgebaut und die GUI entfernt um dir das nötigste zu zeigen.

  • Vielen Dank für Deine Hilfe, allerdings löst das nicht vollständig mein Problem (habe ich auch nicht richtig erläutert :o)

    Ich habe eine Funktion App(String $appName), die mir aus der "Mini-Datenbank" Beschreibung und Name der jeweiligen App (je nach Sprache) in der GUI anzeigen soll und mit Klick auf diesen Button den Pfad ausführen soll.

    Wenn das in AutoIt mit den Indizes nicht hinhaut, werde ich das ganze in einer INI-Datei speichern. Da ist das ganze vielleicht auch ein wenig übersichtlicher. Danke trotzdem, das werde ich mir merken.

    neben AutoIt jetzt auch noch in C/C++, Java und Python aktiv :)
    Stand 04.04.2018, 13:34

  • Dort ist doch genau dasselbe Problem wenn ich dich richtig verstanden habe.

    Schau dir mal diese Zeile an: $CurrentApp = $Apps[$appN]["Name"][$language]
    "Name" wird immer auf Index 0 zugreifen und nicht auf den eigentlichen Index auf den du zugreifen wolltest.

    Damit das so funktioniert wie du es willst, musst du die Enumeratoren verwenden oder Zahlen als Indizes verwenden. Sonst haut das nicht hin.

  • Hätte ich gemacht. Irgendwie hat das bei deinem Beispiel auch nicht funktioniert ... ?(

    Wie auch immer. Ich nehme jetzt die INI-Variante, das finde ich auch etwas strukturierter. Dann muss ich halt UTF-8-technisch auf die Umlaute verzichten. Aber das krieg ich sicher hin. :)

    LG

    neben AutoIt jetzt auch noch in C/C++, Java und Python aktiv :)
    Stand 04.04.2018, 13:34