Fragen zu Iniread (Defaultkey):

  • Hey,

    hab mal wieder eine kleine Frage:

    Ich möchte verschiedene Informationen in eine Setup.ini auslagern.

    Dabei sollen aber alle Sektions und Keys schon angelegt sein. Ich finde das so einfacher zum editieren, gerade auch für Anfänger.

    Beim Auslagern des Hintergrundbilds hätte ich gern ein Defaultbild, dass im Skriptordner liegt.
    Allerdings wird das Defaultbild nicht verwendet, da der jeweilige Key ja in der .ini angelgt ist!

    Hab jetzt etwas drum rumprogrammiert:

    [autoit]


    Global $VA = IniRead('C:\Dokumente und Einstellungen\Nussman\Desktop\autoitskripte\HTPC\HTPC.ini', "Auflösung", "Vertikal", "720")
    Global $HA = IniRead('C:\Dokumente und Einstellungen\Nussman\Desktop\autoitskripte\HTPC\HTPC.ini', "Auflösung", "Horizontal", "1280")
    Dim $DefaultBild = @ScriptDir & "\htpc2.bmp"
    Dim $Bild = IniRead('C:\Dokumente und Einstellungen\Nussman\Desktop\autoitskripte\HTPC\HTPC.ini', "Hintergrundbilder", "HauptGUI", "")
    _Iniread($Bild, $defaultbild)
    Global $HauptGUI = GUICreate("HTPC", $HA, $VA, -1, -1, BitOR($WS_POPUP,$WS_BORDER,$WS_CLIPSIBLINGS))
    GUICtrlCreatePic ($Bild,0 ,0, $HA, $VA)
    GUICtrlSetState(-1, $GUI_DISABLE)

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

    Func _Iniread($key, $default)
    IF $key = "" then
    $bild = $default
    Endif
    Endfunc

    [/autoit]

    Somit wird das hinterlegte Defaultbild angezeigt, wenn als Wert bei HauptGUI nichts eingegeben wird.
    Funktioniert im Prinzip - wollte mich trotzdem mal vergewissern wie ihr sowas löst, wahrscheinlich hab ich die einfachste Lösung nämlich wieder übersehen 8|

    Gruß nuts

    • Offizieller Beitrag

    Ich würde es einfach so machen (ohne die Funktion):

    [autoit]


    Global $VA = IniRead('C:\Dokumente und Einstellungen\Nussman\Desktop\autoitskripte\HTPC\HTPC.ini', "Auflösung", "Vertikal", "720")
    Global $HA = IniRead('C:\Dokumente und Einstellungen\Nussman\Desktop\autoitskripte\HTPC\HTPC.ini', "Auflösung", "Horizontal", "1280")
    Dim $DefaultBild = @ScriptDir & "\htpc2.bmp"
    Dim $Bild = IniRead('C:\Dokumente und Einstellungen\Nussman\Desktop\autoitskripte\HTPC\HTPC.ini', "Hintergrundbilder", "HauptGUI", $defaultbild)
    Global $HauptGUI = GUICreate("HTPC", $HA, $VA, -1, -1, BitOR($WS_POPUP,$WS_BORDER,$WS_CLIPSIBLINGS))
    GUICtrlCreatePic ($Bild,0 ,0, $HA, $VA)
    GUICtrlSetState(-1, $GUI_DISABLE)

    [/autoit]

    Und die absoluten Pfade lieber gegen @ScriptDir oder @AppDataDir austauschen.

  • Hm weiss noch nicht. Eigentlich wärs schön wenn man die setup.ini im netzwerk ablegen könnte (bzw. an einem frei verfügbaren pfad).
    Soweit bin ich aber noch lange nicht :D immerhin muss ich dann ja der compilierten exe irgendwie mitteilen wo sich die setup.ini befindet!

    Derzeit teste ich noch und hab die ini halt in den Skriptordner geworfen.

    Wenn ich im Beispiel die Funktion weglasse wird ist mein Defaultbild ähm eben kein Bild.
    edit \ weil der Key ja in der setup.ini vorhanden ist - allerdings ohne Wert!

    Nochmal zum Verständnis meine setup.ini

    Code
    [Hintergrundbilder]
    HauptGUI = ""

    Und dann soll nicht gar kein Bild sondern das Defaultbild im Ordner des Skriptes angezeigt werden.

    • Offizieller Beitrag

    Ich denke mal du willst bei der Ini das Hintergrundbild mit samt dem Pfad eintragen. Warum schreibst du dein defautbild also nicht gleich in die HTPC.INI?

    Oscars forschlag mit @ScriptDir oder @AppDataDir ist viel übersichtlicher auch wenn du die INI nur zum testen in deinem Scriptverzeichnis hast.

    Mein Vorschlag: Füge deinem Script diese Zeile am Anfang mit hinzu :

    [autoit]

    Const $HTPCDir = @ScriptDir

    [/autoit]

    Schreibe $HTPCDir als Pfad in deine IniRead Aufrufe :

    [autoit]

    Global $VA = IniRead($HTPCDir&"\HTPC\HTPC.ini', "Auflösung", "Vertikal", "720")

    [/autoit]

    Wenn du dein Script fertig hast mußt du nur den Wert von $HTPCDir neu setzen .

  • Ich denke mal du willst bei der Ini das Hintergrundbild mit samt dem Pfad eintragen. Warum schreibst du dein defautbild also nicht gleich in die HTPC.INI?

    war auch mein erster gedanke - leider erscheint dann auch kein hintergrundbild.

    Code
    [Hintergrundbilder]
    HauptGUI = "@ScriptDir & "\htpc2.bmp""

    so müsste doch die setup.ini aussehen oder?