Einstellungen von Programm speichern?!

  • Hallo liebe AutoIt leute,

    ich hätte da eine frage, und zwar wie ist es möglich geänderte Einstellungen des Programmes bzw. des Scripts zu speichern, um beim späteren starten des Programmes die Einstellungen zu behalten.
    Wie ich glaube schreibt man das doch in ein .ini Datei?!

    Bitte um Hilfe!!!

    MfG

    Mehmet T.

  • Danke für eure schnelle Hilfe, ein SUPER SUPPORT!!! :) :thumbup:

    Das ist schon ein wenig Kompliziert fürs erste.
    Könnt ihr mir die grundlagen erklären, wenn ich das beispiel ansehe dann weiß ich vielleicht wie es geschrieben wird, aber ich weiß nicht den grund wieso und weshalb das so geschrieben wird.

    Ich bedanke mich schon mal im vorraus.

  • Nutze bitte mal die Suchfunktion oder schau in den Beiträgen nach, die ich mal geschrieben habe. Ich habe damals super Antworten bekommen.
    Suchbegriff: Lina

    Gruß, Crazy-A(lina).

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • OK ich habe mich jetzt mal umgesehen und habe auch was ähnliches gefunden, bloß ich möchte aktive Steuerelemente speichern, mit IniWrite() und IniRead().

    Hier ein Beispiel:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    GUICreate("Test", 150, 100)

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

    $menu2 = GUICtrlCreateMenu("Schriftart")

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

    $item4 = GUICtrlCreateMenuItem("Arial", $menu2)
    $item5 = GUICtrlCreateMenuItem("Arial Black", $menu2)

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

    GUISetState(@SW_SHOW)

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

    While 1

    $msg = GUIGetMsg()

    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $item4
    $arial = "Arial"
    GUICtrlSetState($item4, $GUI_CHECKED)
    GUICtrlSetState($item5, $GUI_UNCHECKED)
    Case $item5
    $arialblack = "Arial Black"
    GUICtrlSetState($item5, $GUI_CHECKED)
    GUICtrlSetState($item4, $GUI_UNCHECKED)
    EndSwitch

    WEnd

    [/autoit]

    Wenn ich jetzt z.B. auf Arial Black klicken würde und es wäre dann aktiv (mit der Häckchen anzeige), möchte ich es dann beim nächsten Programm start auch soo haben dass, das Arial Black immer noch aktiv ist.

    Bitte helft mir, das wäre echt nett.

    • Offizieller Beitrag

    Das geht so:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    Global $INI = @ScriptDir & '\Meine.ini'
    If Not FileExists($INI) Then IniWrite($INI, 'font', 'Arial', 1) ; wenn nicht vorhanden, wird INI erstellt
    Global $font = IniRead($INI, 'font', 'Arial', 1)

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

    GUICreate("Test", 150, 100)
    $menu2 = GUICtrlCreateMenu("Schriftart")
    $item4 = GUICtrlCreateMenuItem("Arial", $menu2)
    $item5 = GUICtrlCreateMenuItem("Arial Black", $menu2)

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

    If $font = 1 Then
    GUICtrlSetState($item4, $GUI_CHECKED)
    GUICtrlSetState($item5, $GUI_UNCHECKED)
    Else
    GUICtrlSetState($item4, $GUI_UNCHECKED)
    GUICtrlSetState($item5, $GUI_CHECKED)
    EndIf

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

    GUISetState()

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $item4
    $arial = "Arial"
    GUICtrlSetState($item4, $GUI_CHECKED)
    GUICtrlSetState($item5, $GUI_UNCHECKED)
    IniWrite($INI, 'font', 'Arial', 1)
    Case $item5
    $arialblack = "Arial Black"
    GUICtrlSetState($item5, $GUI_CHECKED)
    GUICtrlSetState($item4, $GUI_UNCHECKED)
    IniWrite($INI, 'font', 'Arial', 0)
    EndSwitch
    WEnd

    [/autoit]

    Edit:
    Falls du mehrere Schriftarten einbinden willst würde ich so vorgehen:
    Je Font eine Ziffer vergeben und die aktuelle Ziffer in der INI speichern.

    Spoiler anzeigen
    [autoit]

    ;~ beim Laden den zugehörigen Font markieren
    $font = IniRead($INI, 'font', 'type', 1)
    Switch $font
    Case 1 ; Arial
    ; Code zum Check des Eintrags
    Case 2 ; Arial Black
    ; Code zum Check des Eintrags
    Case 3 ; Arial Narrow
    ; Code zum Check des Eintrags
    Case 4 ; Comic Sans Serife
    ; Code zum Check des Eintrags
    Case 5 ; Courier New
    ; Code zum Check des Eintrags
    Case 6 ; TimesNewRoman
    ; Code zum Check des Eintrags
    EndSwitch

    [/autoit]
  • OK DANKE für eure Hilfe, wo speichert er die INI Datei, speichert er die im gleichem Pfad wie das Programm bzw. das Script?

    Nochmal du diesem Code:

    [autoit]

    ;~ beim Laden den zugehörigen Font markieren
    $font = IniRead($INI, 'font', 'type', 1)
    Switch $font
    Case 1 ; Arial
    ; Code zum Check des Eintrags
    Case 2 ; Arial Black
    ; Code zum Check des Eintrags
    Case 3 ; Arial Narrow
    ; Code zum Check des Eintrags
    Case 4 ; Comic Sans Serife
    ; Code zum Check des Eintrags
    Case 5 ; Courier New
    ; Code zum Check des Eintrags
    Case 6 ; TimesNewRoman
    ; Code zum Check des Eintrags
    EndSwitch

    [/autoit]

    Was genau meinen Sie mit Case 1, 2..., meine Sie mit den zahlen in die INI datei zu schreiben als wert oder so wie es jetzt dran steht?
    Und wenn ich noch kurz fragen darf, für was das "Global"?

  • OK ich habe es jetzt mal ausprobiert und es klappte!
    Bei mehreren als 2 habe ich es so geschrieben:

    Spoiler anzeigen
    [autoit]


    Global $ini = @ScriptDir & "\Config.ini"
    If Not FileExists($ini) Then IniWrite($ini, "Config", "Font", 1)
    Global $config = IniRead($ini, "Config", "Font", "")

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

    If $config = 1 Then
    $arial = "Arial"
    GUICtrlSetFont($edit, 9, 400, 1, $arial)
    GUICtrlSetState($item4, $GUI_CHECKED)
    GUICtrlSetState($item5, $GUI_UNCHECKED)
    GUICtrlSetState($item6, $GUI_UNCHECKED)
    GUICtrlSetState($item7, $GUI_UNCHECKED)
    GUICtrlSetState($item8, $GUI_UNCHECKED)
    GUICtrlSetState($item9, $GUI_UNCHECKED)
    GUICtrlSetState($item10, $GUI_UNCHECKED)
    ElseIf $config = 2 Then
    $arialblack = "Arial Black"
    GUICtrlSetFont($edit, 9, 400, 1, $arialblack)
    GUICtrlSetState($item5, $GUI_CHECKED)
    GUICtrlSetState($item4, $GUI_UNCHECKED)
    GUICtrlSetState($item6, $GUI_UNCHECKED)
    GUICtrlSetState($item7, $GUI_UNCHECKED)
    GUICtrlSetState($item8, $GUI_UNCHECKED)
    GUICtrlSetState($item9, $GUI_UNCHECKED)
    GUICtrlSetState($item10, $GUI_UNCHECKED)
    ElseIf $config = 3 Then
    $comicsansms = "Comic Sans MS"
    GUICtrlSetFont($edit, 9, 400, 1, $comicsansms)
    GUICtrlSetState($item6, $GUI_CHECKED)
    GUICtrlSetState($item4, $GUI_UNCHECKED)
    GUICtrlSetState($item5, $GUI_UNCHECKED)
    GUICtrlSetState($item7, $GUI_UNCHECKED)
    GUICtrlSetState($item8, $GUI_UNCHECKED)
    GUICtrlSetState($item9, $GUI_UNCHECKED)
    GUICtrlSetState($item10, $GUI_UNCHECKED)
    EndIf

    [/autoit]

    Aber ist das Global notwendig?

    Einmal editiert, zuletzt von m3hm3t (10. Juni 2008 um 10:09)

    • Offizieller Beitrag

    Der Speicherort der INI-Datei wird bei der Variablendeklaration festgelegt:

    [autoit]

    Global $INI = @ScriptDir & '\Meine.ini'

    [/autoit]

    In diesem Fall wird das Makro @ScriptDir verwendet, also das Verzeichnis, indem sich auch das Skript selbst befindet.

    Global legt in der Variablendeklaration den Gültigkeitsbereich der Variablen fest. Näheres findest du in der Hilfe unter Variablen.

    Das Bsp. mit der Case-Abfrage:
    Ja, jedem Font wird eine Ziffer zugeordnet und diese wird in der INI eingetragen. (Macht ja wenig Sinn, für jede Schriftart einen eigenen Schlüssel in der INI anzulegen)

    Oh man, du "Siezt" mich. Hast wohl in mein Profil geschaut und gesehen, wie alt ich bin ;( . Da fühle ich mich gleich noch älter :rofl:
    Also, wir duzen uns hier alle ;)

  • Obs duzen oder Siezen, eigentlich duzen ich im forum, aber irgendwie schrieb ich Sie. :D
    Also das mit Global hätte ich schon gerne in der Hilfe angeschaut, nur dass das alles auf Englisch ist das helft mir auch nicht weiter.
    DANKE nochmals für eure hilfe! :)

    Einmal editiert, zuletzt von m3hm3t (10. Juni 2008 um 10:32)