Hilfe zu IniReadSection

  • Hallo zusammen :) ,

    wie der Betreff schon sagt, habe ich eine Frage zu IniReadSection.

    Hier der Code:


    Und hier der Aufbau der Ini-Datei:

    [auftragsname]
    Name=Test

    [Umwandlungsordner]


    [Stuecklistenordner]


    [Zielordner]


    Ausgabe der MsgBox: 1

    Es ist wahrscheinlich ein ganz simpler Fehler. Aber ich komme gerade ums verrecken nicht drauf.

    Könnt Ihr mir da helfen?

    Danke.

    Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.

  • IniReadSection gibt ein Array zurück. Wenn du

    [autoit]

    MsgBox($MB_SYSTEMMODAL, "Test", $READ_Auftragsname[1][0])

    [/autoit]

    mal testest bekommst du "Name" zurück, und

    [autoit]

    MsgBox($MB_SYSTEMMODAL, "Test", $READ_Auftragsname[1][1])

    [/autoit]

    gibt dann den Wert, also "Test" zurück. IniReadSection gibt ein zweidimensionales Array zurück, [0][0] ist die Anzahl aller Elemente in der Sektion der IniDatei, [n][0] ist der Name des Schlüssels und [n][1] der Wert zum Schlüssel.
    Wenn du Fragen hast, dann kannst du dich gerne nochmal melden.

    IniReadSection - Erklärung

    Lg NO1

    Einmal editiert, zuletzt von NO1 :-) (17. August 2017 um 21:10)

  • Hey NO1 :-),

    danke für die Antwort.

    Leider verstehe ich nicht ganz wie das mit dem Array hier funktioniert. Wenn ich das jetzt mal so eintrage bekomme ich leider eine Fehlermeldung.

    (57) : ==> Subscript used on non-accessible variable.:
    MsgBox($MB_SYSTEMMODAL, "Test", $READ_Auftragsname[1][1])
    MsgBox($MB_SYSTEMMODAL, "Test", $READ_Auftragsname^ ERROR

    Kannst du mir das mal erklären? Mit Arrays habe ich im Moment noch Schwierigkeiten um ehrlich zu sein. :(

    LG Mikki

    Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.

  • Hallo @Mikki !
    Kleine Ergänzung zur Antwort von @NO1 :-) (die kennt er natürlich auch) :

    Wenn Dir der Name des Keys in der Sektion bekannt ist, kannst Du den Value auch mit IniRead ermitteln.
    Damit ersparst Du Dir das Arrayhandling ^^ .

    (Anmerkung : "Default" ist ein wählbarer Wert, der zurückgegeben wird, falls der Key nicht gefunden wurde)

    $READ_Auftragsname = IniRead($sFileOpenDialog_Auftrag, "auftragsname", "Name", "Default")
    MsgBox($MB_SYSTEMMODAL, "Test", $READ_Auftragsname)


    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • MsgBox($MB_SYSTEMMODAL, "Test", $READ_Auftragsname)[1][1]

    Das hier wird dir sicherlich nichts vernünftiges zurückgeben, weil du die Arrayindizes auf die MsgBox beziehst.

    Leider verstehe ich nicht ganz wie das mit dem Array hier funktioniert. Wenn ich das jetzt mal so eintrage bekomme ich leider eine Fehlermeldung.

    Vermutlich hast du die falsche IniDatei oder eine falsche Sektion ausgewählt.
    Denn diese Abfrage: If $sFileOpenDialog_Auftrag = True Then macht absolut keinen Sinn. In $sFileOpenDialog_Auftrag steht ein String.
    Wenn du prüfen willst ob ein gültiger Pfad ausgewählt wurde, dann prüfe lieber ob der Pfad ungleich "" ist. "" wäre dann der Abbruch des Dialogs.

  • Hallo @Musashi

    Ja Default schreibt er, wenn er nix gefunden hat. Das habe ich soweit verstanden.

    Okay, so wie du es vorgeschlagen hast, funktioniert es *juhuu* :)

    Dankeschön :)

    Gruß Mikki

    Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.

  • Das hier wird dir sicherlich nichts vernünftiges zurückgeben, weil du die Arrayindizes auf die MsgBox beziehst.

    Vermutlich hast du die falsche IniDatei oder eine falsche Sektion ausgewählt.Denn diese Abfrage: If $sFileOpenDialog_Auftrag = True Then macht absolut keinen Sinn. In $sFileOpenDialog_Auftrag steht ein String.
    Wenn du prüfen willst ob ein gültiger Pfad ausgewählt wurde, dann prüfe lieber ob der Pfad ungleich "" ist. "" wäre dann der Abbruch des Dialogs.

    Ja alpines, hab ich vor 10 min schon ausgebessert, da hab ich mich voll verschrieben. Ist natürlich reinster Schwachsinn ;) ... Aber Mikki hats ja zum Glück richtig angewendet :thumbup:

  • Hallo @alpines

    Ja du hast recht. Die Abfrage war noch aus einem alten Skript, die ich dann umgebaut habe. Hatte ich jetzt ehrlich gesagt nicht drauf geachtet.
    Funktioniert auch ohne, bzw. so wie du es vorgeschlagen hast.

    Danke für den Hinweis. ;)

    Gruß Mikki

    Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.

  • Hallo @Mikki !

    Denn diese Abfrage: If $sFileOpenDialog_Auftrag = True Then macht absolut keinen Sinn. In $sFileOpenDialog_Auftrag steht ein String.

    @alpines hat natürlich recht.

    Dass es trotzdem funktioniert, liegt lediglich daran, dass AutoIt einen leeren String als FALSE, und einen NICHT leeren String als TRUE wertet. Das ist aber kein guter bzw. sauberer Stil :D .

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."