Pfad wird nicht in .ini-Datei geschrieben

  • Moinsn, :)

    ich habe hier ein kleines Problemchen, was ich allerdings nicht nachvollziehen kann.
    Das ist der fehlerhafte Teil von einem großen Skript, den ich zur Übersichtlichkeit mal poste als das ganze Skript.

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

    _tunngle()

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

    Func _tunngle()
    $CheckConfig = FileExists("Config.ini")
    If $CheckConfig = 0 Then
    IniWrite("Config.ini", "Tunngle", "Path", "")
    EndIf
    $TunnglePath = IniRead("Config.ini", "Tunngle", "Path", "")
    If $TunnglePath = "" Then
    $TunnglePath = FileOpenDialog("TEXT-BlaBla", "C:\Program Files (x86)\Tunngle", "Application (*.exe)", 0,"Tunngle.exe")
    IniWrite("Config.ini", "Tunngle", "Path", $TunnglePath)
    MsgBox(0, "Path", $TunnglePath)
    EndIf
    EndFunc ;==>_tunngle

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

    Im Endeffekt, zeigt mir die MsgBox den Pfad richtig an, aber die IniWrite funktioniert nicht. ?(
    Habe schon einiges getestet wie andere Variablen, anderen aufbau (neu geschrieben) und so was.
    Nichts hat geholfen.

    Danke schon einmal im voraus!  ;)

    Einmal editiert, zuletzt von Vîathan (9. Dezember 2013 um 16:16)

  • Hmm ok. Das Problem ist, dass Programm befindet sich in einem bestimmten Ordner, in diesem Ordner ist dann auch die .ini Datei mit anderen Informationen gespeichert.
    Gibt es eine Möglichkeit, dieses FileOpenDialog so zu benutzen, dass es wie FileSelectFolder (war das glaube ich) funktioniert?
    Also das ich quasi einfach den Pfad der Datei die ich auswähle in die Variable schreibe?

    Könntest du mir Ggf das Script so abändern das es funktioniert, denn ich habe das jetzt kurz mal mit meiner Logik versucht und es hat nicht geklappt :D
    ..Natürlich nur wenn das nicht ZU viel Zeit bzw Aufwand kostet :)

    - Gruß

    • Offizieller Beitrag

    Du musst für die Inidatei einfach einen absoluten Pfad benutzen:

    Spoiler anzeigen
    [autoit]


    ; Beispiel 1
    _tunngle()

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

    Func _tunngle()
    Local $sInifile = @ScriptDir & "\Config.ini" ; <- Inidatei im gleichen Verzeichnis wie das Script
    If Not FileExists($sInifile) Then
    IniWrite($sInifile, "Tunngle", "Path", "")
    EndIf
    $TunnglePath = IniRead($sInifile, "Tunngle", "Path", "")
    If $TunnglePath = "" Then
    $TunnglePath = FileOpenDialog("TEXT-BlaBla", "C:\Program Files (x86)\Tunngle", "Application (*.exe)", 0, "Tunngle.exe")
    IniWrite($sInifile, "Tunngle", "Path", $TunnglePath)
    MsgBox(0, "Path", $TunnglePath)
    EndIf
    EndFunc ;==>_tunngle

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

    ; Beispiel 2
    _tunngle()

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

    Func _tunngle()
    Local $sAppDir = @AppDataDir & "\MeinScript" ; <- Verzeichnis im AppDataDir
    If Not FileExists($sAppDir) Then DirCreate($sAppDir) ; Verzeichnis anlegen, falls nicht vorhanden
    Local $sInifile = $sAppDir & "\Config.ini" ; <- Inidatei im AppDataDir
    If Not FileExists($sInifile) Then
    IniWrite($sInifile, "Tunngle", "Path", "")
    EndIf
    $TunnglePath = IniRead($sInifile, "Tunngle", "Path", "")
    If $TunnglePath = "" Then
    $TunnglePath = FileOpenDialog("TEXT-BlaBla", "C:\Program Files (x86)\Tunngle", "Application (*.exe)", 0, "Tunngle.exe")
    IniWrite($sInifile, "Tunngle", "Path", $TunnglePath)
    MsgBox(0, "Path", $TunnglePath)
    EndIf
    EndFunc ;==>_tunngle

    [/autoit]
    • Offizieller Beitrag

    Wenn dir geholfen wurde, kannst du auch den Thread auf gelöst setzen. ;)