- Offizieller Beitrag
HI,
hast du meinen Code getestet? Ich dachte der tut dies bereits.
So long,
Mega
HI,
hast du meinen Code getestet? Ich dachte der tut dies bereits.
So long,
Mega
Es kann natürlich sein das ich nicht ganz durchblick , aber wenn ich mich nicht irre blendet er nur die letzten Suchergebnisse aus während gesucht wird. Mit GUICtrlSetData($ergebnisanzeige2, $re, "-") müsste es zwar eigentlich gehen (so stehts auch inder Deutschen Hilfe) aber das tuts einfach nicht.
gehts um das löschen der liste?
Du kannst ja einfach machen:
Zeige das ergebniss an und dann setze $ergebniss = ""
So sezt man das doch zurück^^
Danke,
ich stand einfach auf dem Schlauch :hammer:(wollt immer die EditBox dazu bringen bei jeder Wertänderung sich zurückzusetzten)
Hi,
in dem letzten Skript was ich gepsotet habe, habe ich
[autoit]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
dies geschrieben. Die 2te Zeile leert die EditBox oder verstehe ich die Diskussion nicht?
So long,
Mega
Doch, du hast schon recht, doch wenn ich mich nicht irre sorgt
[autoit]GUICtrlSetData($ergebnisanzeige2, "")
[/autoit]
nur dafür dass nichts (also"") dazugeschrieben wird. Es wird nicht alles vorhandene = "" gesetzt sondern alles vorhandene + "" gemacht. So müsste es aber funktionieren:
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
$ergebniss=""
GUICtrlSetData($ergebnisanzeige2, $re, "-")
EndFunc ;==>suchen
Vielleicht hast du aber recht und es gehen beide Lösungen.
Du irrst dich, Vinschni. SetData ersetzt die Daten komplett. Also sollte es schon funktionieren.
Aber wieso testest du es nicht einfach?
peethebee
Ich habe es zwar getestet, aber da ist mir wahrscheinlich ein Fehler unterlaufen, ich hab hier doch die richtige Vers. der Datei , oder?
[autoit]#include <file.au3>
#include <Array.au3>
#include <GUIConstants.au3>
Global $datei = FileOpenDialog("Vocabeldatenbank auswählen", @DesktopDir, "Lateinvoc.Dok (*.txt)")
HotKeySet("{ENTER}", "suchen")
GUICreate("Lateinvocabeldatenbanksuche", 305, 250)
GUISetState(@SW_SHOW)
Global $ergebniss
Global $aRecords[100]
$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", 236, 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, 186, 13, -1, -1)
$label9 = GUICtrlCreateLabel("", 2, 230, 235, 13, -1, -1)
GUICtrlSetFont($label9, 7)
While 1
$msg = GUIGetMsg()
Select
Case $msg = $schliesen1
Exit
Case $msg = $hilfe5
MsgBox(0, "Lateinvocabeldatenbanksuche", "by: vinschni " & @CRLF & "th.meger" & @CRLF & "peethebee" & @CRLF & "Huggy")
Case $msg = $Suche4
suchen()
Case $msg = $GUI_EVENT_CLOSE
Exit
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)
_FileReadToArray($datei, $aRecords)
For $x = 1 To $aRecords[0]
If StringInStr($aRecords[$x], $search) <> 0 Then $ergebniss = $ergebniss & @CRLF & $aRecords[$x]
Next
Return $ergebniss
EndFunc ;==>returnLineIfWordFound
Ich habs noch 3 Mal gestestet und immer wurden die Suchergebnisse an die vorherigen angehängt.
Okay, der Fehler liegt woanders, sorry.
Fix kommt gleich per Edit.
Edit:
[autoit]$ergebniss = ""
[/autoit]
Als erste Zeile nach
Func returnLineIfWordFound($search)
[/autoit]peethebee
Dankel,
weißt du auch warum bei der Ergebnissanzeige immer eine Zeile freibleibt(oben) und dann erst dass Suchergebniss kommt?
Hi!
Ja
[autoit]Return StringTrimLeft($ergebniss, 1)
[/autoit]
statt
Return $ergebniss
[/autoit]
einsetzen.
peethebee
Du bist echt klasse,
jetzt funktioniert alles wie am Schnürchen!
th.meger hat gesagt er hätte noch einige Verbesserungsvorschläge, da wollt ich fragen, ob es etwas gibt was dir in dem Script fehlt?
Hi,
ich bin gerade dabei der Datenbanksuche eine Möglichkeit zu geben dass der Benutzer Änderungen, die er im Edit gemacht hat speichern kann. Ich habe aber kene möglichkeit gefunden in AutoIt Dinge in einer Textdatei zu ersetzen, oder zu löschen, aber ich denke da gibt mit Sicherheit eine, oder?
FileOpen, FileWrite, FileWriteLine, FileClose...
_FileWriteFromArray...
peethebee
Ja, das wusste ich schon, gibt es aber etwas wie FileReset("Text1", durch "Text")oder so etwas? Sonst müsste man ja die Zeile rausfinden lassen, aus welcher das ergebniss stammt und dann diese Zeile löschen und durch die Änderungen aus dem Editfeld ersetzte.
Die Hilfe ist dein Freund!
_ReplaceStringInFile
peethebee
Ich möchte mich entschuldigen, ich habs einfach nicht gefunden. :hammer:
Ich hab noch mal etwas verbessert:
[autoit]If $datei = "" Then Exit
[/autoit]
und habe einen Button inigriert der Änderungen der Suchergebnisse(um die Datenbank zu verbessern bzw zu korrigieren) leider funktioniert es nicht.
#include <file.au3>
#include <Array.au3>
#include <GUIConstants.au3>
Global $datei = FileOpenDialog("Vocabeldatenbank auswählen", @ScriptDir, "Lateinvoc.Dok (*.txt)")
If $datei = "" Then Exit
HotKeySet("{ENTER}", "suchen")
GUICreate("Lateinvocabeldatenbanksuche", 305, 250)
GUISetState(@SW_SHOW)
Global $ergebniss
Global $aRecords[100]
$key = "{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)
GUICtrlSetFont($label9, 7)
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 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
if _IsPressed($key) Then
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
es ligt an _IsPressed, aber ich weiß nicht wie ichs anstellen soll. _ReplaceStringInFile sollte zwar eigentlich funktionieren(habs in nem anderen Script getestet, sollte nicht an der Syntax liegen) es zeigt aber keine Wirkung.
Bitte um Hilfe!
du hast $key mit = {F2} definiert... da gibts ne liste in der hilfe, jede taste hat ne nummer bzw zahl!
die musst du nehmen
Hi,
zum Fehler, guck dir einfach mal das Bsp von _isPressed an, dann solltest du es finden. + Anmerkung von huggy.
Verbesserungsvorschlag 1:
IniDatei a la config.ini Hier wird die zuletzt geöffnete Datei gespeichert. Beim Start den wert prüfen und ggf. automatisch die letztgeöffnete Datei öffnen.
So long,
Mega
Ich hatte immer die alte Version der Hilfe(englisch+deutsch) darum, ich hab mich schon gewundert warum da nichts drinsteht. Oh man, danke :hammer: