Edit gesammten Inhalt in eine .ini abspeichern

  • Hallo,

    ich habe wiedermal ein kleines Problemchn und zwar: möchte ich von eine Edit die mehrere Zeilen hat, den gesammten Inhalt in einer .ini abspeichern und auch wieder auslesen. Bis jetzt habe ich es nur hinbekommen, dass er eine von den vielen Zeilen abspeichert mit der Methode unten sowie mit GuiCrtlRead probiert - beides negativ.

    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 241, 241, 228, 210)
    $Edit1 = GUICtrlCreateEdit("", 16, 8, 201, 177)
    GUICtrlSetData(-1, StringFormat("bla abc\r\nblubb lol\r\nasd qwert"))
    $Button1 = GUICtrlCreateButton("speichern", 16, 200, 59, 25)
    $Button2 = GUICtrlCreateButton("laden", 136, 200, 75, 25)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

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

    $Speichern = FileSaveDialog("Speichern", @ScriptDir,"(*.ini)",16,"")

    $aReturn = StringSplit(GUICtrlRead($Edit1), @CRLF,1)
    For $i = 1 To $aReturn[0]
    If $aReturn[$i] <> "" Then
    $bla = $aReturn[$i] & @CRLF
    EndIf
    Next

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

    IniWrite($Speichern,"Angaben","$Text", """" & $bla & """")

    FileClose($Speichern)
    FileMove($Speichern,$Speichern & ".ini")

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

    case $Button2
    $oeffnen = FileOpenDialog("Öfnnen", @ScriptDir , "(*.ini)", 1)
    GuiCtrlSetData($Edit1, IniRead($oeffnen,"Angaben","$Text",""))
    EndSwitch
    WEnd

    [/autoit]

    mfg myrix

    Es gibt keine blöde Fragen, es gibt nur blöde antworten !

    Einmal editiert, zuletzt von myrix (23. Juni 2011 um 21:23)

  • Es wäre hilfreich, wenn Du den Code mit

    [autoit]

    GuiCtrlRead()

    [/autoit]

    ebenfalls posten würdest, sodass man eventuelle Fehler dort ausschließen könnte, da die Hilfe zu besagter Funktion eigentlich angibt, dass der gesamte Inhalt des Controls zurückgegeben wird.
    Dein Problem müsste dann mit

    [autoit]

    GuiCtrlRead()

    [/autoit]

    ,

    [autoit]

    IniWrite()

    [/autoit]

    und

    [autoit]

    IniRead()

    [/autoit]

    zu lösen sein.

  • Ich hatte es wie folgt gehabt, nur diese Zeile:

    [autoit]

    IniWrite($Speichern,"Angaben","$Text", """" & GUICtrlRead($Edit1) & """")

    [/autoit]

    Es gibt keine blöde Fragen, es gibt nur blöde antworten !

  • Meines Wissens musst du alle Zeilenumbrüche ersetzen - erst dann kannst du den Text aus dem Editfeld in einer Ini speichern. Beim auslesen nicht vergessen dein Zeichen wieder in einen Zeilenumbruch zu ändern ;)

    Edit: Mein Internet ist mal wieder abgekac**, also hier ist das Script; deine For-Schleife hatte ich nicht ganz verstanden:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 241, 241)
    $Edit1 = GUICtrlCreateEdit("", 16, 8, 201, 177)
    GUICtrlSetData(-1, StringFormat("bla abc\r\nblubb lol\r\nasd qwert"))
    $Button1 = GUICtrlCreateButton("speichern", 16, 200, 59, 25)
    $Button2 = GUICtrlCreateButton("laden", 136, 200, 75, 25)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

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

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

    $Speichern = FileSaveDialog("Speichern", @ScriptDir,"(*.ini)",16,"")

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

    $Text = GUICtrlRead($Edit1)
    $Text = StringReplace($Text, @CRLF, Chr(255))
    $Text = StringReplace($Text, @CR, Chr(255))
    $Text = StringReplace($Text, @LF, Chr(255))
    IniWrite($Speichern,"Angaben","$Text", """" & $Text & """")

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

    FileClose($Speichern)
    FileMove($Speichern,$Speichern & ".ini")

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

    case $Button2
    $oeffnen = FileOpenDialog("Öfnnen", @ScriptDir , "(*.ini)", 1)
    GuiCtrlSetData($Edit1, IniRead($oeffnen,"Angaben","$Text",""))
    EndSwitch
    WEnd

    [/autoit]

    Einmal editiert, zuletzt von Aquaplant (10. Juni 2011 um 12:10)

  • Danke dir erstmal.

    Nun bastle ich an eine Möglichkeit wieder es herauszulesen, bis jetzt erfolglos ;(

    [autoit]

    GuiCtrlSetData($Edit1, stringRegExpReplace(IniRead($oeffnen,"Angaben","$Text",""))CHR(255),"\r\n" )

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

    oder was auch nicht ging
    GuiCtrlSetData($Edit1, StringFormat(stringRegExpReplace(IniRead($oeffnen,"Angaben","$Text","")))CHR(255),"\r\n" )

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

    und noch ein paar andere Kombinationen, an die ich mich nicht mehr erinnere.

    [/autoit]

    Es gibt keine blöde Fragen, es gibt nur blöde antworten !

  • Hallo Myrix,

    schau dir dazu https://autoit.de/index.php?page=Thread&amp;threadID=20482 an, da habe ich dieses Problem gelöst:

    • [autoit]Func _writeTB($sId_TB) ;Routine zum Screiben in INI
      ;hier werdeb die Zeichen @CR (Wagebrücklauf) @LF Zeilenumbruche und @CRLF getauscht
      $write1 = GUICtrlRead($hedtBox)
      $write1 = StringReplace($write1, @CRLF, "_%CRLF%_")
      $write1 = StringReplace($write1, @CR, "_%CR%_")
      $write1 = StringReplace($write1, @LF, "_%LF%_")
      If $write1 <> "" Then IniWrite($sIni, "Bausteine", $sId_TB, $write1) ;wenn nicht leer in INI schreien
      EndFunc ;==>_writeTB
      [/autoit]
    • [autoit]Func show_Selection() ;Selektion anzeigen
      If GUICtrlRead($hcboTB) = $sElect Then ;es ist kein Textbaustein asgewählt
      GUICtrlSetState($hbtnClear, $GUI_DISABLE) ;Leeren-Button disablen
      GUICtrlSetData($hedtBox, "") ;also EDIT leeren
      Else
      GUICtrlSetState($hbtnClear, $GUI_ENABLE) ;Leeren-Button enablen
      $sId_TB = GUICtrlRead($hcboTB) ;Kurzbezeichnng holen
      ;ConsoleWrite("ausgewählt: " & $sId_TB & @CRLF) ;Kontrolausgabe in Console
      $write1 = IniRead($sIni, "Bausteine", $sId_TB, "") ;Baustein aus INI lesen
      ;hier werdeb die Zeichen für @CR (Wagebrücklauf) @LF Zeilenumbruche und @CRLF zurück getauscht
      $write1 = StringReplace($write1, "_%CRLF%_", @CRLF) ;
      $write1 = StringReplace($write1, "_%CR%_", @CR)
      $write1 = StringReplace($write1, "_%LF%_", @LF)

      GUICtrlSetData($hedtBox, $write1) ;Baustein in Edit-Box anzeigen
      EndIf
      EndFunc ;==>show_Selection

      [/autoit]

    mfg autoBert

  • Gut danke nun Funktioniert das schonmal.
    Nun funktioniert es nimmer mehr in eine Combobox zu laden, es steht nur im Popupmenü drinne.

    Es gibt keine blöde Fragen, es gibt nur blöde antworten !

    • Offizieller Beitrag

    Wo benutzt du eine Combobox?

    Wenn du Daten in eine Combo einfügen willst, muß du bei verwendung von GUICtrlSetData die einzelnen Einträge mit | trennen und nicht mit @CRLF.

  • Du hast Raupi, es ist keine Combobox oben zu sehen.

    [autoit]

    $oeffnen = FileOpenDialog("Öfnnen", ".\Vorlagen\" , "(*.ini)", 1)
    GuiCtrlSetData($Combobox1, IniRead($oeffnen,"Angaben","$Text","")) ;<- will nicht
    GuiCtrlSetData($InputBox1,IniRead($oeffnen,"Angaben","$Text","")) ;<- geht

    [/autoit]

    In der Combobox würde nur ein einziger Eintrag/String reinkommen. Es ging schonmal , aber nun nimmer mehr.

    Es gibt keine blöde Fragen, es gibt nur blöde antworten !

  • Ich habs selber hinbekommen (nach 2 Stunden Zeitverschwendung) mit

    [autoit]

    _GUICtrlComboBox_SetEditText($InputBox1,IniRead($oeffnen,"Angaben","$Text",""))

    [/autoit]

    Es gibt keine blöde Fragen, es gibt nur blöde antworten !