Text ein/auslesen in Gui

  • Hallo,

    ich habe mir für meine Texte eine Gui gebaselt.
    Habe aber leider wieder mal etwas Stress.
    Das sollte die Gui können:

    • Ich habe ein Editfeld
    • In dieses Editfeld soll eine Textdatei eingelesen werden
    • Alles was in dem Editfeld ist, sollte man auch speichern können
    • Wenn ich auf den Startbutton klicke sollte der Inhalt des Codefeldes als Array gelesen werden.

    Und hier meine Gui-Versuche

    [autoit]


    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>
    #include <file.au3>
    #Include <String.au3>

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

    $Form1_1 = GUICreate("Textspeicher", 615, 440, 463, 253)
    $MenuItem1 = GUICtrlCreateMenu("&Datei")
    $mnopen = GUICtrlCreateMenuItem("&öffnen", $MenuItem1)
    $mnSave = GUICtrlCreateMenuItem("&speichern", $MenuItem1)
    $mcClose = GUICtrlCreateMenuItem("&beenden", $MenuItem1)
    $btnFunktion = GUICtrlCreateButton("Start", 416, 356, 155, 25)
    $Input2 = GUICtrlCreateInput("Datei", 28, 312, 437, 21)
    $Code = GUICtrlCreateEdit("", 24, 44, 545, 253)
    GUICtrlSetData(-1, "Code")
    $Label1 = GUICtrlCreateLabel("Dateiname", 480, 316, 55, 17)
    $Label2 = GUICtrlCreateLabel("Code", 28, 20, 69, 17)
    GUISetState(@SW_SHOW)

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

    Global $aCodetxt

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

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

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

    Case $mnopen
    $message = "Bitte Code auswählen."

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

    $openCode = FileOpenDialog($message, @ScriptDir & "\", "Code (*.au3;*.txt)", 1 + 4 )
    If @error Then
    MsgBox(4096,"","Keine Datei gewählt")
    Else
    ;Msgbox(0,"",$openCode)

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

    $Daten = _filereadtoarray($openCode,$aCodetxt)
    $code1 = GUICtrlSetData($code,$aCodetxt)
    _ArrayDisplay($aCodetxt)

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

    EndIf

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

    Case $mnSave
    $message = "Bitte Code auswählen."

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

    $openCode = FileSaveDialog($message, @ScriptDir & "\", "Code (*.au3;*.txt)", 1 + 4 )
    If @error Then
    MsgBox(4096,"","Keine Datei gewählt")
    Else
    MsgBox(4096,"","Auswahl " & $openCode)
    EndIf

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

    Case $mcClose
    Exit
    Case $btnFunktion
    $TextDatei = _filereadtoarray($Code,$aCodetxt)

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

    EndSwitch
    WEnd

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

    Liebe Grüße
    Ilse ;)

    • Offizieller Beitrag

    Für was soll das eingelesene Array denn gut sein?
    Du benutzt es nicht in deinem Script.
    Und woraus willst du ein Array bilden?
    Aus deinem Edit? Beschreib mal bitte genauer, was du überhaupt haben willst.
    Alles viel zu schwammig.

  • Hallo Raupi,

    erinnerst du dich noch an meinen letzten Thread?

    Spoiler anzeigen


    #include <Array.au3>
    #include <file.au3>
    #Include <String.au3>

    $message = "Textauswahl"

    $Auswahl = FileOpenDialog($message, @ScriptDir & "", "Texte (*.txt;*.csv)", 1 + 4 )
    Dim $aZeile[10]
    Global $sPathFile = $Auswahl
    $NeueDatei = InputBox("Neu","DateiName","Neuer-Text.txt")
    _FileReadToArray($sPathFile, $aZeile) ; txt einlesen in Array
    ;_ArrayDisplay($aZeile)
    #region Feldsuche
    $Version = "Version" ; das gesuchte Wort im Text
    $Form = "TYPE=SELECT FORM=NAME" ;ID der Form
    ;hier trage ich alle Suchfelder ein
    #endregion Feldsuche

    For $i = 1 To UBound($aZeile,1)-1
    _ArrayDisplay($aZeile)
    if StringInStr($aZeile[$i],$Version) Then
    $aZeile[$i] = StringReplace($aZeile[$i],$Version,"_Markt()")
    FileWriteLine($NeueDatei, "Test()")
    sleep(1000)
    EndIf

    if StringInStr($aZeile[$i],$Form) Then

    $search = _StringBetween($aZeile[$i],":","ATTR=ID")
    If IsArray($Search) Then
    MsgBox(0,"",$search[0])
    Else
    MsgBox(0,"","Es wurde nichts gefunden")
    EndIf
    EndIf

    Next

    Dafür habe ich mir jetzt eine Gui gemacht.

    1. Damit ich auch Texte Speichern kann
    2. Damit ich in das Feld per Zwischenablage Code einfügen kann

    Ich will aus dem EDIT ein Array bilden.
    Hoffe du kannst das jetzt nachvollziehen.

    Grüße
    Ilse ;)

    • Offizieller Beitrag

    An den letzten Thread erinner ihc mich net, hab aber teilweise Alzheimer :whistling:

    Spaß beiseite, schau dir StringSplit an. Damit kannst du aus deinem Editorinhalt ein Array machen.

  • He Raupi,

    ich muß ja zuerst mal die Datei in den EditorInhalt hineinbekommen!
    Ich kann Sie ja als Array anzeigen,
    nur wie krieg ich die Daten in mein gui Feld?

    ;) Ilse

    • Offizieller Beitrag

    Laden und speichern kannst du so machen:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>
    #include <file.au3>
    #include <String.au3>

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

    $Form1_1 = GUICreate("Textspeicher", 615, 440, 463, 253)
    $MenuItem1 = GUICtrlCreateMenu("&Datei")
    $mnopen = GUICtrlCreateMenuItem("&öffnen", $MenuItem1)
    $mnSave = GUICtrlCreateMenuItem("&speichern", $MenuItem1)
    $mcClose = GUICtrlCreateMenuItem("&beenden", $MenuItem1)
    $btnFunktion = GUICtrlCreateButton("Start", 416, 356, 155, 25)
    $Input2 = GUICtrlCreateInput("Datei", 28, 312, 437, 21)
    $Code = GUICtrlCreateEdit("", 24, 44, 545, 253)
    GUICtrlSetData(-1, "Code")
    $Label1 = GUICtrlCreateLabel("Dateiname", 480, 316, 55, 17)
    $Label2 = GUICtrlCreateLabel("Code", 28, 20, 69, 17)
    GUISetState(@SW_SHOW)

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

    Global $aCodetxt

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

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

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

    Case $mnopen
    $message = "Bitte Code auswählen."
    $openCode = FileOpenDialog($message, @ScriptDir & "\", "Code (*.au3;*.txt)", 1 + 4)
    If @error Then
    MsgBox(4096, "", "Keine Datei gewählt")
    Else
    $aCodetxt = FileRead($openCode)
    ;~ $Daten = _filereadtoarray($openCode,$aCodetxt)
    $code1 = GUICtrlSetData($Code, $aCodetxt)
    ;~ _ArrayDisplay($aCodetxt)
    EndIf
    Case $mnSave
    $message = "Speichern unter ..."
    $saveCode = FileSaveDialog($message, @ScriptDir & "\", "Code (*.au3;*.txt)", 1 + 4)
    If @error Then
    MsgBox(4096, "", "Keine Datei gewählt")
    Else
    FileWrite($saveCode, GUICtrlRead($Code))
    ;~ MsgBox(4096,"","Auswahl " & $openCode)
    EndIf
    Case $mcClose
    Exit
    Case $btnFunktion
    $array= Stringsplit(GUICtrlRead($Code),@crlf,3)
    _ArrayDisplay($array)

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

    EndSwitch
    WEnd

    [/autoit]

    Was du mit dem Array machen willst ist mir immer noch schleierhaft.
    Was soll eigentlich nach klicken von Start passieren?

  • Super Raupi,

    klappt prima.
    (zurück zu deiner Erkrankung...) Spaß muß sein.
    Dieser Inhalt wird auf Textinhalte untersucht (ersetze Müller durch Meier...)
    wenn man auch die Schaltfläche klickt, dann
    soll die neue Datei (die man ja noch nicht sieht) mit dem Namen gespeichert werden,
    der unten drin steht...Ha soweit bin ich aber noch nicht!

    Dank dir
    und werd bald wieder gesund! :D

    Ilse ;)

    • Offizieller Beitrag

    Was du machen willst, weiß ich jetzt. Wozu du aber ein Array brauchst, ist mir immer noch schleierhaft.
    StringReplace oder StringRegExpRepace kannst du direkt auf den String anwenden, dazu braucht du kein Array. ;)

  • Hallo Raupi,

    muß mich wieder melden.
    Das was ich möchte klappt leider noch nicht!
    Ich habe die Gui etwas modifiziert.

    Also:

    • Auf der linken Seite ist der Quelltext(geladen, Zwischenablage....egal)
    • Button Konvertieren sollte rechts einen neuen konvertierten Text anzeigen

    Wenn der Text links in einer Zeile eine Variable enthält, dann
    soll rechts in das Edit Feld 1 neue Zeile eingefügt werden.

    Spoiler anzeigen


    Enthält links der der Version, dann schreibe rechts eine neue Zeile
    mit dem Text der hinter dem Button Konvertieren vorgesehen ist!
    z.B. (Vers. 3322-Ilse)


    Wenn der Text links in der 2. Zeile eine Var. enthält, dann
    soll rechts in das Edit Feld 1 neue Zeile angefügt werden!

    Diese Suchwörter habe ich im Code verankert!

    Spoiler anzeigen


    $Version = "Version" ; das gesuchte Wort links im Quelltext
    $GoTo = "URL" ; ein weiteres gesuchte Wort links im Quelltext
    $Form = "FORM=NAME" ;ID der Form links im Quelltext

    Das ist mein CODE

    [autoit]


    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Array.au3>
    #include <file.au3>
    #include <String.au3>

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

    $Form1_1 = GUICreate("Converter", 969, 653, 282, 104)
    $MenuItem1 = GUICtrlCreateMenu("&Datei")
    $mnopen = GUICtrlCreateMenuItem("&öffnen", $MenuItem1)
    $mnSave = GUICtrlCreateMenuItem("&speichern", $MenuItem1)
    $mcClose = GUICtrlCreateMenuItem("&beenden", $MenuItem1)
    $MenuItem3 = GUICtrlCreateMenu("Konvertierung")
    $MenuItem2 = GUICtrlCreateMenuItem("&Speichern als", $MenuItem3)
    $Input2 = GUICtrlCreateInput("", 512, 12, 205, 21)
    $Label1 = GUICtrlCreateLabel("Dateiname", 728, 12, 55, 17)
    $Tab1 = GUICtrlCreateTab(16, 36, 933, 569)
    $TabSheet1 = GUICtrlCreateTabItem("Text bearbeiten")
    $Quelle = GUICtrlCreateEdit("", 28, 112, 393, 457)
    GUICtrlSetData(-1, "Quelle")
    GUICtrlSetBkColor(-1, 0xE3E3E3)
    $Ziel = GUICtrlCreateEdit("", 548, 112, 385, 457)
    GUICtrlSetData(-1, "Ziel")
    GUICtrlSetBkColor(-1, 0xE3E3E3)
    $Start = GUICtrlCreateButton("Konvertieren >", 432, 116, 103, 25)
    GUICtrlCreateTabItem("")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    #region Feldsuche
    $Version = "Version" ; das gesuchte Wort im Text
    $GoTo = "URL" ; ein weiteres gesuchte Wort im Text
    $Form = "FORM=NAME" ;ID der Form
    #endregion Feldsuche

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

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

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

    Case $mnopen
    $message = "Bitte Code auswählen."
    $openCode = FileOpenDialog($message, @ScriptDir & "\", "Code (*.au3;*.txt)", 1 + 4)
    If @error Then
    MsgBox(4096, "", "Keine Datei gewählt")
    Else
    $aCodetxt = FileRead($openCode)
    ;~ $Daten = _filereadtoarray($openCode,$aCodetxt)
    $Quelle1 = GUICtrlSetData($Quelle, $aCodetxt)
    ;~ _ArrayDisplay($aCodetxt)
    EndIf

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

    Case $mnSave
    $message = "Speichern unter ..."
    $saveCode = FileSaveDialog($message, @ScriptDir & "\", "Code (*.au3;*.txt)", 1 + 4)
    If @error Then
    MsgBox(4096, "", "Keine Datei gewählt")
    Else
    FileWrite($saveCode, GUICtrlRead($Quelle))
    ;~ MsgBox(4096,"","Auswahl " & $openCode)
    EndIf
    Case $mcClose
    Case $MenuItem2
    Case $Start
    ;$array= Stringsplit(GUICtrlRead($Quelle),@crlf,3)
    ; _ArrayDisplay($array)
    $Quelle2 = GUICtrlSetData($Ziel, $aCodetxt)
    if StringInStr(GUICtrlRead($Ziel),$Version) Then ;Formname wird convertiert!
    Msgbox(0,$Ziel,"gefunden")
    ;FileWriteLine($Quelle2, "$oForm = _IEFormGetObjByName ($oIE")
    endif

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

    EndSwitch
    WEnd

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

    Der Button Konvertieren (darum geht es) stimmt noch nicht!
    Also, links steht jede Menge Text
    klickt man auf Konvertieren dann kommen rechts z.B. 3 neue Zeilen raus!

    Beispieltext links:

    Spoiler anzeigen


    VERSION 1110311ttdd
    URL GOTO=http://www.test.de/
    TAG POS=1 TYPE=SELECT FORM=Name:suche ATTR=ID: 544

    Ergebnis rechts: Wenn Version gefunden wurde...Replace Version mit....

    Spoiler anzeigen


    (Version Ilse 6577) ; wenn links Version enthalten ist!
    Adresse = http://www.test.de/ ; wenn links GoTo enthalten ist!


    Das mit StringInStr, StringReplace...bekomme ich irgendwie hin,
    Das Hauptproblem des Buttons Konvertieren!
    Wie kann ich den Zeilendurchlauf links starten und rechts (falls $var vorhanden), Zeilenweise schreiben
    da komme nicht nicht weiter!

    Würde mich über ein Beispiel sehr freuen

    Liebe Grüße
    Ilse ;)