Wortsuche+Zeilenausgabe aus txt'

  • So, habs ein bisschen aufpoliert!


    1) Jetzt funktioniert dein _IsPressed , waren 2 fehler drin!
    2) Hab megas vorschlag eingebaut, jetzt wird die zuletzt geöffnete Datei beim
    Start geöffnet!
    3) Hab einen Button eingefügt: "Andere Datenbank" , damit , wenn das zuletzt geöffnete Dokument offen ist, man will aber ein anderes öffnen, es ändern kann ohne die .ini zu löschen! Man kann also einfach eine andere .txt datei angeben , wieder über FileOpenDialog()!

    4) Leichtere Anweisungen in der "hilfe" MsgBox()

    5) Ich hab dir alles kommentiert damit du es verstehst!


    Viel spaß!

    [autoit]

    #include <file.au3>
    #include <Array.au3>
    #include <GUIConstants.au3>
    #include <Misc.au3> ; hat gefehlt!


    Global $datei = IniRead(@ScriptDir & "\Vokabelsettings.au3", "file", "path", "0")

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

    if $datei = "0" Then

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

    Global $datei = FileOpenDialog("Vocabeldatenbank auswählen", @ScriptDir, "Lateinvoc.Dok (*.txt)")
    If $datei = "" Then Exit

    if $datei <> "" Then

    IniWrite(@ScriptDir & "\Vokabelsettings.au3", "file", "path", $datei)

    EndIf

    Endif

    HotKeySet("{ENTER}", "suchen")
    GUICreate("Lateinvocabel", 305, 250) ; hab ich gekürzt, klingt einfach besser ;)
    GUISetState(@SW_SHOW)

    Global $ergebniss
    Global $aRecords[100]
    $key = "71" ; Das ist die Taste F2

    $schliesen1 = GUICtrlCreateButton("&Schließen", 236, 214, 62, 31, -1, -1)
    $ergebnisanzeige2 = GUICtrlCreateEdit("" & @CRLF, 1, 104, 304, 107, $ES_AUTOVSCROLL + $WS_VSCROLL)
    $progress = GUICtrlCreateProgress(2, 213, 213, 14, -1, -1)
    $Suche4 = GUICtrlCreateButton("Suchen",160, 77, 62, 20, -1, -1)
    $hilfe5 = GUICtrlCreateButton("&Hilfe", 260, 6, 38, 22, -1, -1)
    $anweisung6 = GUICtrlCreateLabel("Bitte geben sie die lateinische Bedeutung des gesuchten Worts hier ein:", 6, 6, 227, 26, -1, -1)
    $eingabe7 = GUICtrlCreateInput("Bitte gesuchten Begriff hier eingeben!", 2, 35, 303, 19, -1, -1)
    $label8 = GUICtrlCreateLabel("Ergebnissanzeige der Suche:", 4, 86, 150, 13, -1, -1)
    $label9 = GUICtrlCreateLabel("", 2, 230, 235, 13, -1, -1)
    $speichern10 = GUICtrlCreateButton("&Speichern", 236, 77, 62, 20, -1, -1)
    $datei1 = GUICtrlCreateButton("Andere Datenbank", 10, 60) ; knöpfchen für andere DB
    GUICtrlSetFont($label9, 7)

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


    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $schliesen1
    Exit
    Case $msg = $hilfe5
    MsgBox(0, "Lateinvocabeldatenbanksuche", "by: vinschni " & @CRLF & "th.meger" & @CRLF & "peethebee" & @CRLF & "Huggy")
    MsgBox(0, "Neue Vocabeln eigeben", "Für neue Vokabel, bitte in dem Ergebnissfeld, das untere" & @Crlf & "Zuerst das deutsche Vocabel und dann das lateinische!" & @Crlf & "Zum Beispiel: Hallo / Salvete, Salve")
    MsgBox(0, "Neue Vocabeln speichern", "Wenn man neue Vocabeln speichern will muss man F2 gedrückt halten, während man auf ""Speichern"" drückt.")
    Case $msg = $Suche4
    suchen()

    Case $msg = $datei1

    $datei = FileOpenDialog("Vocabeldatenbank auswählen", @ScriptDir, "Lateinvoc.Dok (*.txt)") ; neue Datenbank zum suchen!


    Case $msg = $GUI_EVENT_CLOSE
    Exit
    Case $msg = $speichern10


    if _IsPressed($key) Then ; funktioniert jetzt Dank #include <Misc.au3> !!!
    FileWrite($datei, GUICtrlRead($ergebnisanzeige2))
    Else
    _ReplaceStringInFile($datei, $ergebniss, GUICtrlRead($ergebnisanzeige2))
    EndIf
    EndSelect
    WEnd

    Func suchen ()
    GUICtrlSetData($ergebnisanzeige2, "")
    $re = returnLineIfWordFound(GUICtrlRead($eingabe7))
    For $i = 0 To 100
    GUICtrlSetData($progress, $i)
    Sleep(15)
    If GUICtrlRead($progress) = 100 Then GUICtrlSetData($label9, "Die Suche nach <" & GUICtrlRead($eingabe7) & "> ist abgeschlossen!")
    Next

    GUICtrlSetData($ergebnisanzeige2, $re, "-")
    EndFunc ;==>suchen

    Func returnLineIfWordFound($search)
    $ergebniss=""
    _FileReadToArray($datei, $aRecords)
    For $x = 1 To $aRecords[0]
    If StringInStr($aRecords[$x], $search) <> 0 Then $ergebniss = $ergebniss & @CRLF & $aRecords[$x]
    Next
    Return StringTrimLeft($ergebniss, 1)
    EndFunc ;==>returnLineIfWordFound

    [/autoit]

    Einmal editiert, zuletzt von huggy (19. November 2006 um 10:19)

  • Ich hab deinen Rat befolgt, alles noch mal überarbeitet, leider hab ich's mit demn Schleifen nicht so, und des macht einfach nicht was ich will, bitte helft mir :weinen:

    Spoiler anzeigen
    [autoit]

    #include <file.au3>
    #include <Array.au3>
    #include <GUIConstants.au3>
    #include <Misc.au3>

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

    FileOpen("config.ini", 1)
    Global $datei = FileRead("config.ini")
    FileClose("config.ini")

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

    if $datei = "" Then
    Global $datei = FileOpenDialog("Vocabeldatenbank auswählen", @ScriptDir, "Lateinvoc.Dok (*.txt)")
    FileDelete("config.ini")
    $config = FileOpen("config.ini", 1)
    FileWriteLine($config , $datei & @CRLF)
    FileClose($config )
    ElseIf FileOpen($datei, 1) = -1 Then
    Global $datei = FileOpenDialog("Vocabeldatenbank auswählen", @ScriptDir, "Lateinvoc.Dok (*.txt)")
    FileDelete("config.ini")
    $config = FileOpen("config.ini", 1)
    Else
    If $config = -1 Then
    MsgBox(0, "Error", "Error, mit config.ini stimmt etwas nicht!.")
    Exit
    EndIf

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

    EndIf

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

    HotKeySet("{ENTER}", "suchen")
    GUICreate("Lateinvocabeldatenbanksuche", 305, 250)
    GUISetState(@SW_SHOW)

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

    Global $ergebniss
    Global $aRecords[100]
    $key = "71"

    $schliesen1 = GUICtrlCreateButton("&Schließen", 236, 214, 62, 31, -1, -1)
    $ergebnisanzeige2 = GUICtrlCreateEdit("" & @CRLF, 1, 104, 304, 107, $ES_AUTOVSCROLL + $WS_VSCROLL)
    $progress = GUICtrlCreateProgress(2, 213, 213, 14, -1, -1)
    $Suche4 = GUICtrlCreateButton("Suchen",160, 77, 62, 20, -1, -1)
    $hilfe5 = GUICtrlCreateButton("&Hilfe", 260, 6, 38, 22, -1, -1)
    $anweisung6 = GUICtrlCreateLabel("Bitte geben sie die lateinische Bedeutung des gesuchten Worts hier ein:", 6, 6, 227, 26, -1, -1)
    $eingabe7 = GUICtrlCreateInput("Bitte gesuchten Begriff hier eingeben!", 2, 35, 303, 19, -1, -1)
    $label8 = GUICtrlCreateLabel("Ergebnissanzeige der Suche:", 4, 86, 150, 13, -1, -1)
    $label9 = GUICtrlCreateLabel("", 2, 230, 235, 13, -1, -1)
    $speichern10 = GUICtrlCreateButton("&Speichern", 236, 77, 62, 20, -1, -1)
    GUICtrlSetFont($label9, 7)

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $schliesen1
    Exit
    FileWrite(@ScriptDir& "config.ini", $datei,9)
    Case $msg = $hilfe5
    MsgBox(0, "Lateinvocabeldatenbanksuche", "by: vinschni " & @CRLF & "th.meger" & @CRLF & "peethebee" & @CRLF & "Huggy")
    MsgBox(0, "Neue Vocabeln speichern", "Wenn man neue Vocabeln speichern will muss man während dem <Speichern> F2 drücken.")
    Case $msg = $Suche4
    suchen()
    Case $msg = $GUI_EVENT_CLOSE
    Exit
    Case $msg = $speichern10
    $dll = DllOpen("user32.dll")
    if _IsPressed($key, $dll) Then
    FileWrite($datei, GUICtrlRead($ergebnisanzeige2))
    Else
    _ReplaceStringInFile($datei, $ergebniss, GUICtrlRead($ergebnisanzeige2))
    EndIf
    DllClose($dll)

    EndSelect
    WEnd

    Func suchen ()
    GUICtrlSetData($ergebnisanzeige2, "")
    $re = returnLineIfWordFound(GUICtrlRead($eingabe7))
    For $i = 0 To 100
    GUICtrlSetData($progress, $i)
    Sleep(15)
    If GUICtrlRead($progress) = 100 Then GUICtrlSetData($label9, "Die Suche nach <" & GUICtrlRead($eingabe7) & "> ist abgeschlossen!")
    Next

    GUICtrlSetData($ergebnisanzeige2, $re, "-")
    EndFunc ;==>suchen

    Func returnLineIfWordFound($search)
    $ergebniss=""
    _FileReadToArray($datei, $aRecords)
    For $x = 1 To $aRecords[0]
    If StringInStr($aRecords[$x], $search) <> 0 Then $ergebniss = $ergebniss & @CRLF & $aRecords[$x]
    Next
    Return StringTrimLeft($ergebniss, 1)
    EndFunc ;==>returnLineIfWordFound

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]
  • Warum nimmst du nicht einfach meine version?

    Ich hab dir das alles schon eingefügt...

    Npochwas wegen deinem INI problem...


    fileopen nützt dir nix, schau dir an wie das geht, in meinem post:


    IniWrite und iniRead ist das Zauberwörtche ;)


    das dllcall ist überflüssig...

    Einmal editiert, zuletzt von huggy (19. November 2006 um 14:38)

  • Sorry, tut mir leid, ich war noch auf Seite zwei als ichs gepostet hab und dann hab ich die Seite nicht aktualisier. Aber danke, mit dem Iniwrite lässt sich dass viel einfacher lösen als mit FileWrite(Line). Ich hab da noch eine Frage an dich. ich hab ja etwas intigriert, dass man Änderungen an der suchausgabe speichern kann, aber es funktioniert nur

    [autoit]


    if _IsPressed($key) Then
    FileWrite($datei, GUICtrlRead($ergebnisanzeige2))
    Else
    _ReplaceStringInFile($datei, $ergebniss, GUICtrlRead($ergebnisanzeige2))
    EndIf

    [/autoit]


    dass _ReplaceStringInFile($datei, $ergebniss, GUICtrlRead($ergebnisanzeige2)) kommt gar nicht zum zug bzw bewirkt nichts? Ich würde gerne noch etwas allgemeines fragen. Nämlich, ich bin jetzt hier so vorgegangen dass immer wenn ich etwas neues einfügen wollte, ich dass neue Scriptstück erst in einem anderen Script getestet hab um eventuelle andere Konflikte mit dem restlichen Script zu vermeiden(welche ich wenn vorhanden dann danach versuchte auszubessern) Haltet ihr diese Methode für sinnvoll oder währe es praktischer wenn ich es andersd machen würde?

  • Ich schau mir die hilfe an, vor allem das beispiel unten, lass es einmal durchlaufen und dann füge ich es ein, in mein Script :)

    WEnn fehler enstehen, probiere ich sie wegzu bekommen, irgendwann klappt es immer

    aber wenn man sich die Hilfe durchliest, sollte es eigentlich kein Problem mehr geben ;)

  • Alles funktioniert jetzt(dank Huggy auch speichern), darum möchte ich mich noch ein mal bei allen bedanken die mir geholfen haben, ihr seid klasse!
    :klatschen: :klatschen: :kiss: :klatschen: :klatschen:

    Gruß Vinschni