Möglichst faules speichern von Einstellungen

  • Servus
    wie der Titel schon sagt,
    ich versuche möglichst faul mit wenig aufwand meine Einstellungen im Script zu speichern
    dies mache ich mit dieser Funktion:

    [autoit]

    Func _SaveSetting($Key, $Value)
    IniWrite($Name & ".ini", $Name, $Key, $Value)
    EndFunc

    [/autoit]

    das läuft dann so ab das sobald man etwas ändert, direkt das neue gespeichert wird (kein Button oder Beendung des Script erforderlich)

    zum Beispiel

    [autoit]

    Func _SelectFolder()
    $SelectFolder = FileSelectFolder("Select Folder", "") ;Ordner auswählen
    GUICtrlSetData($FolderInput, $SelectFolder & "\") ;erstmal in ein Input schreiben
    _SaveSetting($FolderInput, $SelectFolder & "\") ;und mit der Funktion in eine ini schreiben
    EndFunc

    [/autoit]

    jetzt kommt die Frage,
    ich speichere ja als inikey die controlid nummer,
    wie kann ich jetzt das ganze beim start des scripts auslesen?
    oder habt ihr eine bessere Variante?

    mfg

  • Naja ich würde nicht die Controlid zur Zuordnung verwenden, denn wenn du die GUI später mal erweiterst stimmen deine IDs nicht mehr und das Auslesen der ini würde ggf. falsche Felder befüllen.
    Davon ab wäre ein manuelles Editieren der ini Datei dadurch auch nicht gut möglich.

    Alternativ zu einer ini Datei ist vielleicht auch der Einsatz einer CSV Datei sinnvoll oder bequemer. Vielleicht kannst du ja etwas mehr vom Script posten, insbesondere die GUI. So kann man schlecht eine Aussage treffen wie man das am besten umsetzt.

  • ich gebe dir ein teil der gui,
    das script war viel arbeit was auch nicht in udf's steht oder ähnlichem und ich poste es ungerne :/

    Spoiler anzeigen
    [autoit]

    $SearchGUI = GUICreate($Name, 620, 385)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    $SearchSettingsButton = GUICtrlCreateButton("Settings", 92, 0, -1, 20)
    GUICtrlSetOnEvent($SearchSettingsButton, "_Settings")
    $SearchGUITab = GUICtrlCreateTab(0, 0, 622, 386)
    GUICtrlCreateTabItem("FTP")
    $SearchGUIEdit = GUICtrlCreateEdit("", 0, 20, 620, 270)
    $LocalFileFolderLabel = GUICtrlCreateLabel("Folder", 8, 306, 78, -1, $ES_RIGHT)
    $LocalFileFolderInput = GUICtrlCreateInput("", 90, 303, 465)
    $LocalFileFolderButton = GUICtrlCreateButton("...", 558, 304, 50, 17, 0)
    GUICtrlSetOnEvent($LocalFileFolderButton, "_SelectLocalFolder")
    $FilesLabel = GUICtrlCreateLabel("", 8, 330, 78, -1, $ES_RIGHT)
    $GetFTPFilesButton = GUICtrlCreateButton("Get FTP Files", 0, 351, 620, 33, 0)
    GUICtrlSetOnEvent($GetFTPFilesButton, "_GetFTPFiles")

    [/autoit]

    ich hoffe das reicht :)

  • Speichere nicht die Controlid, da sich die ändern kann, wenn du dein GUI veränderst.
    Vielleicht würde dir das auch so reichen

    Spoiler anzeigen
    [autoit]

    Func _SelectFolder()
    $SelectFolder = FileSelectFolder("Select Folder", "") ;Ordner auswählen
    GUICtrlSetData($FolderInput, $SelectFolder & "\") ;erstmal in ein Input schreiben
    _SaveSetting("$FolderInput", $SelectFolder & "\") ;und mit der Funktion in eine ini schreiben
    EndFunc

    [/autoit]

    Damit speicherst du den Variablennamen, und nicht die Controlid

  • logisch xD
    alda war das grad dumm :D

    so gehts dann aber auch nicht :/

    [autoit]

    Func _LoadSettings()
    $Key = IniReadSection($Name & ".ini", $Name)
    If Not @error Then
    For $o = 1 To $Key[0][0]
    GUICtrlSetData($Key[$o][0], $Key[$o][1], "")
    Next
    EndIf
    EndFunc

    [/autoit]

    jetzt kommt aber noch ne frage
    ich habe eine gui auf der ein button ist, die Settings (einstellungen) öffnet (in einer neuen gui)
    wie kann ich nun machen das die 2. gui wenn man auf das rote X klickt sich selbst hided @SW_HIDE

  • Fast,

    Spoiler anzeigen
    [autoit]


    Func _LoadSettings()
    $Key = IniReadSection($Name & ".ini", $Name)
    If Not @error Then
    For $o = 1 To $Key[0][0]
    GUICtrlSetData(Assign(Stringtrimleft($Key[$o][0], 1), Eval(Stringtrimleft($Key[$o][0]), 1), 4)) , $Key[$o][1], "")
    Next
    EndIf
    EndFunc

    [/autoit]

    Müsste so funktionieren (ungetestet)

  • Wie im anderen Thread kein lauffähiges Beispielscript mit gui und Speicher / Lese Funktion. Ich bastel mir den Kram nicht selbst zusammen...
    Davon ab hast du doch bereits Tipps/Lösungen bekommen, die du mit "geht nicht" kommentiert hast. Was erwartest du ohne Testscript und einer nichts sagenden Fehlerbeschreibung?