Inhalt Datei in Editfeld

  • Hi,

    ich würde gerne in meinem Skript die Config File in ein Editfeld schreiben, zum bearbeiten, und anschließend abspeichern.
    Das einlesen habe ich hinbekommen, allerdings,

    - schreibt er alles in ein Zeile mit ; getrennt.
    - Zeilenumbrüche werden mit dem Kasten Symbol dargestellt.

    So soll es natürlich nicht sein.

    Weiß einer was ich ändern muss?

    Spoiler anzeigen
    [autoit]

    Dim $wc = 500
    Dim $hc = 500

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

    Local $configgui= GUICreate("Config bearbeiten", $wc, $hc, @DesktopWidth - $wc - 20, 20)
    $EditControl_config = GUICtrlCreateEdit("", 10, 10, 450, 450)
    $Button_speichern = GUICtrlCreateButton("Speichern", 175, 475, 150)

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

    Dim $arTxt
    _FileReadToArray($FileName, $arTxt)
    If IsArray($arTxt) Then
    $data = ''
    For $i = 1 To $arTxt[0]
    $data &= $arTxt[$i] & @LF
    Next
    GUICtrlSetData($EditControl_config, $data)
    EndIf

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

    GuiSetState()

    [/autoit]

    Einmal editiert, zuletzt von dabudai (22. September 2008 um 14:33)

  • Danke für die Antworten.
    Nun habe ich ein kleines anderes Problem in diesem Zusammenhang.

    Die Funktion wird durch einen Menüpunkt aus dem maingui aufgerufen:

    Spoiler anzeigen
    [autoit]

    Func _Configbearbeiten()

    Dim $wc = 500
    Dim $hc = 500

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

    Local $configgui= GUICreate("Config bearbeiten", $wc, $hc, @DesktopWidth - $wc - 20, 20)
    $EditControl_config = GUICtrlCreateEdit("", 10, 10, 450, 450)
    $Button_speichern = GUICtrlCreateButton("Speichern", 175, 475, 150)

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

    GUICtrlSetData($EditControl_config, FileRead($FileName))

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

    GuiSetState()

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

    While 1

    $msgconfig = GUIGetMsg()

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

    Select

    Case $msgconfig = $GUI_EVENT_CLOSE
    WinClose("Config bearbeiten")

    Case $msgconfig = $Button_speichern

    $config_file = FileOpen($FileName,2) ; 2 erase previous contents

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

    $blabal = GUICtrlRead($EditControl_config)
    Filewrite ($config_file, $blabal )

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

    IF @error Then
    SetError(7,0,0)
    EndIf

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

    FileClose($config_file)

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

    if MsgBox(64,"Success","config.ini successfully written!") = 1 Then
    WinClose("Config bearbeiten")
    EndIf

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


    EndSelect

    WEnd

    EndFunc ;==> _Configbearbeiten

    [/autoit]

    Das Problem liegt nun darin, dass ich das Fenster nicht geschlossen bekommen. Dabei bleibt das gesamte Programm hängen.
    Desweitern denke ich, dass man die Funktion bestimmt noch optimieren kann.

    • Offizieller Beitrag

    Ich vermute mal ganz stark, dass um diese Funktion herum eine andere GUI werkelt - ebenfalls mit "$msg = GUIGetMsg" ?
    Das überschneidet sich natürlich, bei mehreren Fenstern mußt du dann auch Abfragen von welchem Fenster das Ereignis kommt. ( GUIGetMsg(1) liefert Array mit diesen Infos, s. Hilfe)
    Besser ist sowieso, alle GUI beim Programmstart (nicht in der Funktion) zu erstellen und sie dann mit GUISetState($gui, @SW_SHOW) anzuzeigen.

  • Genau so ist es.
    Aber jetzt habe ich es mir total zerschossen.
    Er bleibt beim Klick auf Config bearbeiten nun komplett hängen.
    Deshalb hier mal der ganze Auszug aus dem GUI.

    Spoiler anzeigen
    [autoit]

    Opt("TrayMenuMode",1) ; Default tray menu items (Script Paused/Exit) will not be shown.
    $aktivieren = TrayCreateItem("Aktivieren")
    $deaktiveren = TrayCreateItem("Deaktivieren")
    $openitem = TrayCreateItem("Open")
    $exititem = TrayCreateItem("Exit")

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

    TraySetIcon("Shell32.dll",14)
    TraySetState()

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

    ; MAIN GUI
    Dim $w = 200
    Dim $h = 200

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

    Local $maingui= GUICreate("Networkchanger", $w, $h, @DesktopWidth - $w - 20, 20)

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

    ;Menü erstellen
    $menuDatei = GUICtrlCreateMenu ("Datei")
    $menuInfo = GUICtrlCreateMenu ("Info")
    $menuDateiconfigbearbeiten= GUICtrlCreateMenuitem("Config bearbeiten", $menuDatei)
    $menuDateiBeenden = GUICtrlCreateMenuitem("Beenden", $menuDatei)
    $menuInfoAbout = GUICtrlCreateMenuitem("Über diese Software", $menuInfo)

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

    ;Buttons erstellen
    $Button_1 = GUICtrlCreateButton("Networkchanger aktivieren", 25, 30, 150)
    $Button_2 = GUICtrlCreateButton("Networkchanger deaktivieren", 25, 65,150)

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

    ;CONFIG GUI
    Dim $wc = 500
    Dim $hc = 500
    $configgui= GUICreate("Config bearbeiten", $wc, $hc, @DesktopWidth - $wc - 20, 20)
    $EditControl_config = GUICtrlCreateEdit("", 10, 10, 450, 450)
    $Button_speichern = GUICtrlCreateButton("Speichern", 175, 475, 150)

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

    GuiSetState($maingui, @SW_SHOW)

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

    While 1

    _CheckConfig()
    $msg = GUIGetMsg()
    $traymsg = TrayGetMsg()

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

    Select
    Case $msg = $GUI_EVENT_CLOSE
    _Exit()
    ;GUISetState(@SW_HIDE,$maingui)
    Case $msg = $GUI_EVENT_MINIMIZE
    GUISetState(@SW_HIDE,$maingui)
    Case $msg = $Button_1

    $profil = _Checkip()
    ;_ArrayDisplay($profil)

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

    if $profil = "" Then
    SetError(6,0,0)
    Else
    If _DefaultPrinter($profil[0]) = 1 AND _Proxy($profil[0]) = 1 Then
    MsgBox(64,"Success","Printer and Proxy successfully set from" & $profil[0])
    EndIf
    EndIf

    Case $msg = $Button_2
    MsgBox(0, 'Testing', 'Button 2 was pressed') ; Will demonstrate Button 2 being pressed
    Case $msg = $menuDateiBeenden
    _Exit()
    Case $msg = $menuInfoAbout
    _Info()
    Case $traymsg = $exititem
    ExitLoop
    Case $traymsg = $openitem
    GUISetState(@SW_SHOW,$maingui)
    GUISetState(@SW_RESTORE,$maingui)
    Case $traymsg = $TRAY_EVENT_PRIMARYDOUBLE
    GUISetState(@SW_SHOW)
    GUISetState(@SW_RESTORE,$maingui)
    Case $traymsg = $aktivieren
    Run('Notepad.exe') ; Will Run/Open Notepad
    Case $traymsg = $deaktiveren
    MsgBox(0, 'Testing', 'Button 2 was pressed') ; Will demonstrate Button 2 being pressed
    Case $msg = $menuDateiconfigbearbeiten
    _Configbearbeiten()

    EndSelect

    ; Fehlerausgaben
    $error = @error
    If $error Then
    If $error = "1" Then
    MsgBox(16,"_SetIP Error","netsh.exe not exists!")
    ElseIf $error = "2" Then
    MsgBox(16,"_SetIP Error","netsh can't change. Code:"&@CRLF&$_setip)
    ElseIf $error = "3" Then
    MsgBox(16,"Printer-Error","Can't set default Printer!")
    ElseIf $error = "4" Then
    MsgBox(16,"Proxy-Error","Can't set Proxy!")
    ElseIf $error = "6" Then
    MsgBox(16,"Netzwerk","Can`t find a valid network!")
    ElseIf $error = "7" Then
    MsgBox(16,"Config.ini","Can`t write config.ini")
    EndIf
    EndIf

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

    WEnd

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

    ;------------------------------------------------------------------------------------------------------------------

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

    Func _Info()
    MsgBox(0, "Info", "Info")
    EndFunc ;==> _Info
    ;------------------------------------------------------------------------------------------------------------------
    Func _Exit()
    Exit
    EndFunc ;==> _Exit

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

    ;-----------------------------------------------------------------------------------------------------------------

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

    ;----------------------------------------------------------------------------------------------------------------
    Func _Configbearbeiten()

    GUICtrlSetData($EditControl_config, FileRead($FileName))
    GuiSetState($configgui,@SW_SHOW)

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

    While 1

    $msg = GUIGetMsg()

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

    Select

    Case $msg= $GUI_EVENT_CLOSE
    GuiSetState($configgui,@SW_HIDE)
    Case $msg = $Button_speichern

    $config_file = FileOpen($FileName,2) ; 2 erase previous contents

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

    $blabla = GUICtrlRead($EditControl_config)
    Filewrite ($config_file, $blabla )

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

    IF @error Then
    SetError(7,0,0)
    EndIf

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

    FileClose($config_file)

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

    if MsgBox(64,"Success","config.ini successfully written!") = 1 Then
    GuiSetState($configgui,@SW_HIDE)
    EndIf

    EndSelect
    WEnd

    EndFunc ;==> _Configbearbeiten
    ;-----------------------------------------------------------------------------------------------------------------

    [/autoit]

    Einmal editiert, zuletzt von dabudai (22. September 2008 um 13:54)