GUI Problem, mal wieder

  • Seit ich mit GUI's arbeite find ich sie recht intressant :D
    Meine Frage nur nochmal..
    Wie ist es möglich den Inhalt aus einem "Input" oder "Edit" Feld zu speichern? (txt z.b.)
    Und beim nächsten aufruf wieder einzuladen?

    (Ja verdammt ich will ein kleines Notizen/Aufgaben Tool schreiben :P)

    Einmal editiert, zuletzt von Sen (30. April 2009 um 13:58)

  • Würde ich mithilfe einer TextDatei machen. Dazu brauchst du die Befehle FileWrite, FileRead
    Zum auslesen des textes in dem Editfeld oder des Inputfeldes einfach GuiCtrlRead benutzen.

    MfG SiLenCa

  • noch besser wär ne ini datei

    ne ini ist wie folgt aufgebaut

    Code
    [SEKTION]
    KEY=VALUE

    damit kannst text strukturierter speichern. funktionen für den gebrauch von inis in autoit

    [autoit]


    IniDelete ( "filename", "section" [, "key"] )
    IniRead ( "filename", "section", "key", "default" )
    IniReadSection ( "filename", "section" )
    IniReadSectionNames ( "filename" )
    IniRenameSection ( "filename", "section", "new section" [, flag] )
    IniWrite ( "filename", "section", "key", "value" )
    IniWriteSection ( "filename", "section", "data" [, index ] )

    [/autoit]

    wenn du noch umfangreicher "daten" "irgendwo" abspeichern willst empfehle ich dir, mit einer datenbank zu arbeiten. bei autoit bietet sich hierfür SQLite an, da es hierfür bereits ne integrierte UDF gibt

  • Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 394, 447, 193, 125)
    $Input1 = GUICtrlCreateInput("Input1", 128, 24, 129, 21)
    $Button1 = GUICtrlCreateButton("Button1", 120, 72, 65, 33, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    Global $file = @ScriptDir & "\text.txt"

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

    _Fileread() ; .txt Datei einlesen und den Inhalt der ersten Zeile ins Input schreiben

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

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

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

    Func _Filewrite() ;Input in eine .txt Datei speichern
    local $data = GUICtrlRead($Input1) ;Input auslesen
    if FileExists($file) then ;prüfen obs es die .txt Datei überhaupt gibt
    local $openfile = FileOpen($file,2) ;öffnen
    FileWrite( $openfile, $data) ;ausgelesenen Inhalt des Inputs in die Datei schreiben
    MsgBox(1, "", "Gespeichert")
    else
    _FileCreate($file)
    local $openfile = FileOpen($file,2)
    FileWrite($openfile, $data)
    MsgBox(1, "", "Gespeichert")
    endif
    FileClose($openfile)
    endfunc

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

    Func _Fileread() ;.txt Datei einlesen
    if FileExists($file) then
    local $openfile = FileOpen($file,0)
    local $data = FileReadline($openfile)
    GUICtrlSetData($input1, $data)
    FileClose($openfile)
    else
    MsgBox(1, "", "Datei konnte nicht geöffnet werden")
    endif
    endfunc

    [/autoit]

    Beispiel für eine .txt Datei - finde ich für ein Aufgaben-Tool besser.

    Einmal editiert, zuletzt von nuts (30. April 2009 um 13:25)

  • Klappt soweit alles 1A, einziges Problem:
    Wenn ich 2x auf meinen "Speichern" Button drücke steht der Text auch 2x in der Txt,
    Gibt es die möglichkeit eine Txt Datei per Befehl "leer" zu machen?

  • Habe das Script von nuts geprüft. Arbeitet so, das der Inhalt des Inputfeldes NICHT doppelt in der Textdatei steht.
    So wie nuts schon schrieb, wurde ja auch der FileOpen-Befehl in seinem Script richtig verwendet.

    Lieben Gruß,
    Alina

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

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr