inhalt von .txt datei einfügen

  • hallo,
    ich möchte gerne den inhalt von einer .txt datei in ein fenster einfügen und immer wieder aktualisieren lassen. Der text in der datei ist verschlüsselt und soll beim einfügen logischer weise wieder entschlüsselt werden. Bis jetzt hab ich das schon mit folgendem skript hinbekommen:

    Spoiler anzeigen
    [autoit]


    $read2 = _StringEncrypt(0, FileRead($pfad), "1")
    If $read2 <> GuiCtrlRead($Edit1) Then
    GUICtrlSetData($Edit1, $read2)
    EndIf

    [/autoit]


    Doch wenn die datei zu groß wird, dauert das ewig, bis er es aktualisiert hat. Also müsste man es so machen, dass er nur das neue mit an das alte anfügt, doch dafür kenn ich den befehl nicht. kann mir jemand helfen???^^

    Einmal editiert, zuletzt von robs01 (27. Oktober 2009 um 19:52)

  • Wenn ich das richtig verstanden habe, ist es (zumindest nach dem was ich weiß) nicht möglich.
    Da der Text ja verschlüsselt ist ( daher kommt wahrscheinlich auch die trägheit beim aktualisieren - da er jedes mal wieder entschlüsseln muss.)

    Desweiteren würde ich , mal so nebenbei, nicht die entschlüsselten , sondern die noch verschlüsselten Strings vergleichen - das sollte einiges an Zeit einsparen.


    Sind die Texte nicht Verschlüsselt, würde ich die datei mit FileReadToArray() einlesen,
    und das schreiben ins Editfeld irgendwie erledigen mit

    [autoit]

    For $i = Ubound($AlteDateiImArray)-1 to Ubound($NeueDateiImArray)-1
    $TextImEditFeld &= $NeueDateiImArray[$i] & " "
    Next
    GUICtrlsetData($Edit1,$TextImEditFeld)

    [/autoit]

    Das ist jetzt frei ausm kopf geschrieben und muss nich funktionieren - nichtmal ansatzweise. Aber es soll dir die VOrgehensweise verdeutlichen mit der ich das ganze machen würde..

  • oke danke schonmal... aber ohne verschlüsselung geht es schnell - also das ver- und entschlüsseln braucht die ganze zeit. Gibt es denn wirklich keine methode, welche auch mit verschlüsselung geht?

  • [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>

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

    Global $fDialog, $s_Vorher = "", $bBool, $sCheck, $i_Vorher = 0

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("File-Engine", 236, 329, 192, 124)
    $Label1 = GUICtrlCreateLabel("Text der in die Datei geschrieben werden soll:", 8, 64, 219, 17)
    $Input1 = GUICtrlCreateInput("", 8, 88, 217, 21, BitOR($ES_AUTOHSCROLL,$ES_READONLY))
    $Edit1 = GUICtrlCreateEdit("", 8, 192, 217, 121, BitOR($ES_AUTOVSCROLL,$ES_READONLY,$ES_AUTOHSCROLL,$ES_WANTRETURN,$WS_HSCROLL,$WS_VSCROLL))
    $Label2 = GUICtrlCreateLabel("Text der sich in der Datei befindet:", 8, 160, 166, 17)
    $Label3 = GUICtrlCreateLabel("Bitte wähle eine Textdatei aus:", 8, 8, 149, 17)
    $Button1 = GUICtrlCreateButton("...", 8, 32, 27, 25, $WS_GROUP)
    $Button2 = GUICtrlCreateButton("Einfügen", 8, 120, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    _Check_Edit_Field()
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    _Choose_File()
    Case $Button2
    _Paste_Into_File()

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

    EndSwitch
    WEnd

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

    Func _Choose_File()
    $fDialog = FileOpenDialog("Bitte wähle eine Textdatei aus:", "", "(*.txt)")
    If @error Then
    Return 0
    EndIf
    $s_Read = FileRead($fDialog)
    GUICtrlSetData($Edit1, $s_Read)
    GUICtrlSetStyle($Input1, $ES_AUTOHSCROLL)
    ;~ GUICtrlSetStyle($Edit1, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_WANTRETURN,$WS_HSCROLL,$WS_VSCROLL))
    $bBool = True
    EndFunc

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

    Func _Paste_Into_File()
    Local $s_Text = GUICtrlRead($Input1)
    If StringInStr(GUICtrlRead($Edit1), $s_Text) Then
    MsgBox(16, "Fehler", "Text besteht schon in der Datei!")
    Return 0
    EndIf
    If $s_Text = "" Then
    MsgBox(16, "Fehler", "Kein Text im Eingabefeld!")
    Return 0
    EndIf
    FileWrite($fDialog, @CRLF & $s_Text)
    GUICtrlSetData($Input1, "")
    EndFunc

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

    Func _Check_Edit_Field()
    If $bBool = True Then
    $sCheck = FileRead($fDialog)
    ;~ $sCheckField = GUICtrlRead($Edit1)
    $iLines = _FileCountLines($fDialog)
    If $iLines <> $i_Vorher Then
    TrayTip("Zeilen", "Zeilen in der Datei: " & $iLines, 10)
    EndIf
    If $sCheck <> $s_Vorher Then
    GUICtrlSetData($Edit1, $sCheck)
    EndIf
    ;~ If $sCheckField <> $s_Vorher Then
    ;~ FileDelete($fDialog)
    ;~ FileWrite($fDialog, $sCheckField)
    ;~ EndIf
    $s_Vorher = FileRead($fDialog)
    $i_Vorher = _FileCountLines($fDialog)
    EndIf
    EndFunc

    [/autoit]

    So, ich glaube das wolltest du :)

  • ne... genau so habe ich es ja auch gemacht, doch mit verschlüsselung dauert es einfach viel zu lange, wenn viel text im spiel ist^^

  • Das Problem ist einfach dass beim verschlüsseln immer ein komplett neuer String generiert wird.
    ZB:
    Hallo -> BOLBAG4342MSF
    Welt -> BIPPSSF2956SVX
    aber
    HalloWelt ist dann nicht BOLBAG4342MSFBIPPSSF2956SVX sondern 534636OOOSCXX
    dadurch kann man halt nicht mal eben das "neu verschlüsselte" auslesen. sonder muss immer die komplette datei encrypten.

  • achsoo... schade^^
    dann muss ich wohl anders an die sache rangehen :D
    Weiß vlt jemand ob und wie man eine txt datei als befehl bei autoit mit passwort schützen kann?