Problem beim Speichern von Werten in eine .ini Datei

  • Hallo Community,

    seit heute morgen stehe ich mit den von Autoit erstellten .ini Dateien auf Kriegsfuß.
    Viel mit inis gearbeitet habe ich nie, kann also sein das die Lösung für folgendes Problem zu einfach ist als dass ich daran gedacht hätte.
    Sollte die Lösung hierfür schon einmal erläutert worden sein, dann habe ich ihn mit der SuFu nicht gefunden, weshalb ich erfreut wäre wenn ihr auf diesen Lösungstread hinweißen würdet.

    Jetzt aber zu meinem eigentlichen Problem:

    Und zwar sollen zwei Variablen mit vorher definierten Werten in eine .ini Datei gespeichert werden.
    Meine Ausführung sieht hier so aus:

    Spoiler anzeigen
    [autoit]

    If $nMsg = $Speichern Then
    IniWrite("config.ini", "usual", "name", $datei)
    IniWrite("config.ini", "usual", "time", $zeit)
    EndIf

    [/autoit]

    Mit $nMsg wird die GUI angesprochen. (Ja, wurde in Skoda erstellt)
    $Speichern ist die Variable des Buttons "Speichern"
    $datei und $zeit sind besagte Variablen die gespeichert werden sollen

    Was ich in der .ini, die Autoit daraufhin erstellt, jedoch stehen habe ist folgendes:

    Spoiler anzeigen

    [usual]
    name=5
    time=9

    Zuerst dachte ich, dass das Fehlercodes sind, diese habe ich aber nochnie gesehen und Google weis diesmal auch keine Lösung.
    Die Werte die hier eigentlich stehen sollten sind Werte aus InputBoxen welche vorher deklariert werden. Nicht 5 oder 9.

    Das Script speichert also nicht das was es in die ini speichern soll.

    Falls mir jemand zu dieser fortgeschrittenen Stunde mit meinem Ini Problem helfen könnte wäre ich euch sehr dankbar :)

    Achja:
    Genutzt wird Windows 7, falls das zur Lösung des Problems hilft, außerdem hier das ganze Script:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("SAD - Config", 410, 405, 283, 130)
    $headtext = GUICtrlCreateLabel("STAY ALIVE DRIVE!", 112, 8, 177, 28)
    GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif")
    $copy = GUICtrlCreateGroup("Zu kopierende Datei", 16, 64, 377, 89)
    $Input1 = GUICtrlCreateInput("1", 32, 88, 257, 21)
    $Label1 = GUICtrlCreateLabel("Name der zu kopierenden Datei., muss sich IM gleichen Ordner befinden!", 24, 120, 349, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $intervall = GUICtrlCreateGroup("Kopier-intervall", 16, 176, 377, 137)
    $zeit = GUICtrlCreateInput("420000", 32, 200, 121, 21)
    $Label2 = GUICtrlCreateLabel("Zeit die zwischen zwei Kopier-", 32, 232, 146, 17)
    $Label3 = GUICtrlCreateLabel("vorgängen IN MILLISEKUNDEN", 32, 248, 159, 17)
    $Label4 = GUICtrlCreateLabel("vergeht.", 32, 264, 43, 17)
    $Label5 = GUICtrlCreateLabel("1 Sekunde = 1000 Millisekunden", 224, 200, 159, 17)
    $Label6 = GUICtrlCreateLabel("1 Minute = 60000 Millisekunden", 224, 224, 154, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Speichern = GUICtrlCreateButton("Speichern", 40, 328, 113, 25)
    $Abbrechen = GUICtrlCreateButton("Abbrechen", 264, 328, 105, 25)
    $nach = GUICtrlCreateLabel("Nach dem Speichern das Programm neustarten", 88, 368, 227, 17)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $Label1
    EndSwitch

    If $nMsg = $Speichern Then
    IniWrite("config.ini", "usual", "name", $Input1)
    IniWrite("config.ini", "usual", "time", $zeit)
    EndIf

    WEnd

    [/autoit]

    Nicht wundern wegen den drei Labels, war zu faul das in ein Label zu stecken o.0

    Einmal editiert, zuletzt von VreaG (23. Juli 2012 um 13:57)

  • Hallo VreaG,

    herzloch willkommen im Forum. Der Fehler wird nicht von iniwrite verursacht sondern entseht dadurch dass die Varialen die ControlID eines /Edit-)Elementes enthalten und nicht den Inhalt des Controls. Du musst das Control zuerst mit GuiCtrlRead auslesen. Also so:

    [autoit]

    If $nMsg = $Speichern Then
    IniWrite("config.ini", "usual", "name", GUICtrlRead($datei))
    IniWrite("config.ini", "usual", "time", GUICtrlRead ($zeit))
    EndIf

    [/autoit]

    siehe dazu

    Zitat

    GUICtrlRead

    Liest den Status oder die Daten eines Controls
    Quelle: dt. Hilfe

    edit: Tipfehler im Skript korrigiert
    mfg autoBert

    Einmal editiert, zuletzt von autoBert (23. Juli 2012 um 13:35)

  • Bevor du einfach C&P machst.
    Es muss natürlich so heißen.

    [autoit]

    If $nMsg = $Speichern Then
    IniWrite("config.ini", "usual", "name", GUICtrlRead($datei))
    IniWrite("config.ini", "usual", "time", GUICtrlRead($zeit))
    EndIf

    [/autoit]
  • warum nicht so?:

    [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $speichern
    IniWrite("config.ini", "usual", "name", GUICtrlRead($Input1))
    IniWrite("config.ini", "usual", "time", GUICtrlRead($zeit))
    EndSwitch
    WEnd

    [/autoit]

    Simon nörgelt, Simon nervt - aber Simon verbessert die Welt. Glaubt er.

    Einmal editiert, zuletzt von x0r (23. Juli 2012 um 13:46)

  • Ah, blöder Fehler.
    Es funktioniert jetzt, Danke für eure Hilfe :D
    Ich arbeite nur gerne mit der If-Funktion, weshalb ich eben kein Case benutze,
    die eingebauten Case-Funktionen kommen von Skoda, womit ich die GUI erstellt habe.
    Vielen dank auch für den Link, die Seite kannte ich noch garnicht (?!) werde mich jetzt dort ein wenig umsehen.

  • Es macht aber keinen Sinn bei Switch $nMsg abzufragen und dann dazu noch in einer If-Anweisung.
    Skoda stellt Case-Funktionen her??
    Switch ist auch wie eine If-Funktion, nur halt mit mehreren Abfragen wie eine If-ElseIf-Funktion.


  • Switch ist auch wie eine If-Funktion, nur halt mit mehreren Abfragen wie eine If-ElseIf-Funktion.

    Das wusste ich auch nochnicht, wieder was gelernt :) Muss mir dazu mal die Hilfedatei durchlesen, suche nämlich grade eine If- mit mehreren Else-Funktionen
    Wie gesagt der komplette obere Teil ist Kodas Machtwerk, da pfusch ich solange ich die Switch-Funktion nicht verstehe nicht drin rum