Richtiges Wort finden

  • Erst mal der scren für´s bessere Verständnis:
    [Blockierte Grafik: http://img3.imagebanana.com/img/s7ursith/osdibfd.JPG]

    So ich habe mir folgendes gedacht, man gibt jetzt in das fenster ein wort ein(wie ich das schon gemacht habe). Aber nicht vollständig sondern nur Teilweise die Buchstaben also z.b. für hallo _a__o (das _ bedeutet der buchstabe ist unbekannt). So und jetzt soll das script in einer textdatei (die natürlich vorher ausreichend mit wörten bestückt wurde ;) ) Passende Wörter suchen die auf dieses schema passen. Also im Fall _a__o wären das: Wort hat 5 Buchstaben, zweiter Buchs. ist ein a, fünfter Buchs. ist ein o.

    Ich hab schon selber ein wenig rum probiert aber mir fehlt die Routine, und Vorkenntnisse über die Befehle.

    PS: Ihr fragt euch bestimmt wie kommt man auf so eine Idee. Ganz einfach, es kam einfach wieder mal nix im Fehrsehen und da habe ich ein wenige rum geguckt was so alles kommt. Und bin wie so oft auf diesen komplett sinnfreien sender 9live gestoßen. Und da war grade so eine Aufgabe suchen sie Wörter die mit a anfangen und mit n aufhören (<- so in etwa), na ja und da hab ich mir gedacht das wäre eig. mal keine schlechte Idee für ein script xD.

    PS_2: Falls gar nix geht mit der txt oder falls das zu komplex ist, könnte man es ja noch mit einer ini probieren. Da kann man dan auch die wörter sortieren lassen in die einzelnen Sectionen (nach Buchstaben^^)

    PS_3: Der richtige Gui sieht natürlich dan nicht so sche***e aus :D

    Einmal editiert, zuletzt von TheLol (23. Juni 2008 um 14:34)

  • StringRegexp,und wenn ein Buchstabe gefunden wurde,geht er die liste noch einmal mit den/m anderen Buchstaben durch !
    Alle richtigen werden egspeicert .

    Zitat

    Programmieren ist so lange lustig bis ein Fehler auftritt!


    ~ Dankeschön

  • k, ich werds probieren. Falls ich nicht weiter komme sage ich bescheid.

    (Ich hab grade gemerkt das ich mein Tread-Name derb komisch anhört/liest xD)

    €dit:

    Nette Idee.
    Als Wörterbuch kannst du ja das deutsche Wörterbuch von FF nehmen, da stehen schon fast 600.000 Begriffe drin.

    Wo findet man das ^^ (also die datei wo die Wörter drinnen stehen)

    Einmal editiert, zuletzt von TheLol (23. Juni 2008 um 14:44)

  • Einfach bei den FireFox AddOns das deutsche Wörterbuch herunterladen (die XPI speichern) und entpacken (das ist nur eine ZIP-Datei). In dieser befindet sich im Verzeichnis Dictionarys das deutsche Wörterbuch.

  • Das kann man nur sofort installieren :/

    €dit: Aso, kann mir noch jemand nen beispiel für das StringRegExp geben. Weil mit den Beispiel in der Hilfe komme ich nicht wirklich zurecht :(

  • Hallo,

    ich habe mir mal das Wörterbuch von FF genommen und nen bissel angepasst, ich habe bei allen Wörtern das /xxxxx dahinter weg genommen, habe mir gedacht das es wohl ein Hinweis darauf ist wer das Wort in die Liste eingepflegt hat.

    Ich hab mir dann mal nen Script zusammen geschustert.

    Meine Daten waren:
    Anzahl Wörterbuch: 592137 Wörter
    Dauer: 26 Sekunden
    Gesucht: _a_e

    Mein Script mal so als Alternative zu StringRegExp:

    #include <array.au3>
    #include <file.au3>
    dim $liste,$result[1]
    _FileReadToArray("german.txt",$liste)

    _Find("_a_e")

    _ArrayDisplay($result)
    Exit

    Func _Find($str)
    ReDim $result[1]
    Dim $laenge = StringLen($str)
    dim $cur
    for $u = UBound($liste) - 1 to 1 Step -1
    $l = stringlen($liste[$u])
    If $l = $laenge Then _ArrayADD($result,$liste[$u])
    Next
    _ArrayDelete($result,0)
    For $i = 1 To $laenge
    $cur = StringMid($str,$i,1)
    If $cur <> '_' Then
    for $u = UBound($result) - 1 To 0 step -1
    If StringMid($result[$u],$i,1) <> $cur then _ArrayDelete($result,$u)
    Next
    EndIf
    Next
    EndFunc


    PS, bei mir werden die Button für Autoit Quelltext nicht angezeigt, keine Ahnung warum.

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

  • Mal als frage nebenbei
    Ich hab mich schon 100mal gefragt wie kann man so was machen: ^^

    [autoit]


    For $i = $Buchstaben To 0 Step -1
    $ZeichenIn&$i = GUICtrlRead($Input&$i)

    Next

    [/autoit]
  • Hier mal ein Beispiel mit RegEx (gefühlte 3 Sekunden auf ca.600.000 Wörter):

    Spoiler anzeigen
    [autoit]

    #region Includes
    #include <Array.au3>
    #endregion Includes

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

    $sWort = "n_m__"

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

    $sRegEx = "[\s]" & StringReplace($sWort,"_","[\w]" ) & "[\s]"

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

    $hFile = FileOpen(@scriptdir & "\de-DE.dic",0 )
    $sDictionary = FileRead( $hFile )
    $aWoerter = StringRegExp($sDictionary, $sRegEx,3)

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

    _ArrayDisplay($aWoerter)

    [/autoit]


    dafür muß aber das gesamte Wörterbuch in Kleinbuchstaben umgewandelt werden.

    Zu deiner Frage:
    Das geht am einfachsten wenn du Arrays benutzt.
    Also erst den GUICtrls ein Array zuweisen:
    $aControl[0] = GUICtrlCreateInput
    $aControl[1] = GUICtrlCreate...

    Dann kannst du das schön in eine Schleife einbauen:

    [autoit]

    For $i = 0 To $Buchstaben
    $ZeichenIn[$i] = GUICtrlRead($aControl[$i])
    Next

    [/autoit]
  • ah :D auf [\s] muss man erst mal kommen^^
    Na ja und dan halt mein übliches Problem Arrays :pinch: , aber ich werds gleich mal probieren

    PS: Das suchen dauert bei mir evtl 0,5 sec
    €dit: So hab erst mal nen Test zu den Arrays gemacht aber so richtig funzt das irgend wie ned:

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    #include <GUIConstants.au3>

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

    Dim $Input,$ZeichenIn

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

    $Buchstaben = 3

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

    $Form1 = GUICreate("Worter Finder v.0.1", 395, 105, 236, 429)
    GUISetBkColor(0x716F64)
    $Input[0] = GUICtrlCreateInput("", 8, 8, 17, 21)
    GUICtrlSetLimit(-1,1)
    $Input[1] = GUICtrlCreateInput("", 32, 8, 17, 21)
    GUICtrlSetLimit(-1,1)
    $Input[2] = GUICtrlCreateInput("", 56, 8, 17, 21)
    GUICtrlSetLimit(-1,1)
    $Button1 = GUICtrlCreateButton("Suchen", 72, 56, 251, 25)
    GUISetState(@SW_SHOW)

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

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

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

    EndSwitch
    WEnd

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

    Func _suchen()
    For $i = $Buchstaben To 0 step -1
    $ZeichenIn[$i] = GUICtrlRead($Input[$i])
    TrayTip("TEST",""&$ZeichenIn[$i]&"",2)
    Sleep(1000)
    Next
    EndFunc

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

    €dit2: So habs alles^^ aber das mit den arrays würde mich trotz dem noch mal interessieren ;)

    2 Mal editiert, zuletzt von TheLol (23. Juni 2008 um 18:59)