Ini Pfad Leseproblem

  • Hallo,

    ich muß das Scriptdir Verzeichnis in meiner Ini lesen.
    Meine Pfadangaben mit Scriptdir starten alle nicht!

    Normale Pfade funktionieren.

    Kann man Scriptdir in der Ini verwenden?
    Meine exe Dateien befinden sich alle im Scriptdirverzeichnis!
    Und diese müssen anhand der ini gelesen werden!

    [autoit]


    [Namen]
    1=Tiere 2011
    2=Mein Programm

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

    [Link]
    1="C:\Program Files\Tiere 2011\stman2012.exe" ; startet
    2="@Scriptdir & "" &Meine.exe"

    [/autoit]

    @Scriptdir & "\" &Meine.exe

    Grüße
    Ilse ;)

    P.S. wurde oben nicht korrekt angezeigt!

    2 Mal editiert, zuletzt von Ilse (4. März 2014 um 13:32)

  • Hallo RR04,

    ja, hatte ich auch schon versucht!

    Das klappt leider nicht!

    [autoit]


    @Scriptdir & "\Meine.exe"

    [/autoit]

    ....Konnte nicht gefunden werden!
    Wenn ich den kpl. Pfad in die ini schreibe klappt es.
    Nur Scriptdir nicht!

    ;) Ilse

  • Ist doch klar. @Scriptdir & "\Meine.exe" ist ein ganz normaler String, d.h. das Programm müsste in einem Ordner names @Scriptdir & " liegen und Meine.exe" heißen. Dass das keinen Sinn ergibt merkst du wahrscheinlich selbst (oder solltest du zumindest). Du könntest in so einem Fall einfach Execute benutzen (der "Pfad" ist ja schließlich AutoIt-Code), das wäre aber zu unsauber und nicht sehr sicher.

    Versuch's mal so:

    [autoit]

    Opt("ExpandVarStrings", 1)
    MsgBox(0, "@ScriptDir", "@ScriptDir@")

    [/autoit]
  • Hallo James,

    das habe ich verstanden.
    Krieg es nicht zum laufen!

    Hier mal der CASE Code

    [autoit]


    Case $idButton[0] To $idButton[UBound($idButton) - 1]
    ;MsgBox(4096, "", StringFormat ("Es wurde eine Schaltfläche gedrückt.\nID: %d\nText: %s", $nMsg, GUICtrlRead ($nMsg)))
    $sLink = IniRead($sDataDir & "" & GUICtrlRead($idcbo) & ".ini", "Link", $nMsg - 4, "frei")
    ShellExecute($sLink)

    [/autoit]

    Zum Prüfen

    [autoit]


    MsgBox(0, "@ScriptDir", $sLink)

    [/autoit]


    @Scriptdir ....als String erscheint.

    UND GENAU DAS MUSS ICH UMWANDELN: ABER WIE!!!


    Mit ShellExecute werden alle LINKS perfekt gestartet!
    Wenn ich

    [autoit]


    Opt("ExpandVarStrings", 1)

    [/autoit]


    an den Anfang setze passiert nichts!

    Also nochmal die Frage:

    Wie kann ich den INI String so anpassen, damit Meine.exe (im Spriptdir) gestartet wird.!
    Also mit dem Case Button!

    Liebe Grüße
    Ilse ;)

    Einmal editiert, zuletzt von Ilse (4. März 2014 um 12:57)

  • Darf man fragen warum du überhaupt explizit @ScriptDir angeben willst?
    Wenn das WorkingDir nicht verändert wird reicht doch einfach nur "Meine.exe" als Pfadangabe.
    Die wird in dem Fall dann automatisch im SkriptDir (wenn es gleich WorkingDir ist) gesucht.

  • Hey AspirinJunkie,

    danke nochmal für die Infos!
    Und wieder was gelernt.

    RR04,

    ja, müsste aber dann mein kpl. Script mit IniWrite anpassen.

    trotzdem Danke

    Viele liebe Grüße
    Ilse ;)

  • Das ist richtig.
    Ich frage mich, ob es nicht besser ist, noch strukturierter zu arbeiten.
    Gerade wenn man mit mehreren Programmen in verschiedenen Ordnern arbeitet.

    Also die Ini-Datei am zentralen Ort platzieren und direkte Pfade verwenden sollte, sowie die Key-Values eindeutiger formulieren.

    [autoit]


    @ScriptDir & "\Meine.exe"
    @ScriptDir & "\MeinProg.exe"
    MsgBox(0, "", @ScriptDir & "\Meine.exe")
    MsgBox(0, "", @ScriptDir & "\MeinProg.exe")
    IniWrite(@ScriptDir & "\my.ini", "MyProgs", "Meine", @ScriptDir & "\Meine.exe")
    IniWrite(@ScriptDir & "\my.ini", "MyProgs", "MeinProg", @ScriptDir & "\MeinProg.exe")
    Exit
    ; Ende

    [/autoit]