Auslesen von wörter aus txt datei mit Visual Basic

Hallo liebe Visual Basic experten,
Ich möchte ein Wörterbuch programmieren.Ich bin noch anfänger. Es soll wie folgt geschehen.

Ein beliebiges Wort in Textbox,Combobox eingeben (z.B lesen ) und dann entertaste oder eine buttontaste klicken dann soll nach dem Wort gesucht werden das in txt datei ist und gezeigt werden. Aber schon während der Eingabe des ersten Buchstabe soll Wörtervörschläge gezeigt werden.
Ich brauche den Code. Aber solltet ihr bessere vorschläge haben dann könnt ihr mit schreiben.

Hallo,
am besten eine Datenbanktabelle anlegen (z.B mit Access) die Datei einlesen, das Objekt (Combobox) damit verknüpfen.
Oder wenn das nicht gewünscht ist,
die Datei in ein ungebundenes (also an keine Datenbank gebunden) Recordset einlesen und dann mit ‚like‘ bzw. ‚matches‘ während der Eingabe suchen und die gewünschten Begriffe anzeigen.

Viel Spass

Hi Daniel,

die Funktion, die du Implementieren möchtest heisst „find as you type“.
Damit wir dir weiterhelfen können brauchen wir schon mehr als eine Idee, die bereits tausendfach programmiert ist. Am besten postest du mal, wie weit du bis jetzt selbst gekommen bist und wo deine Probleme liegen.

Liebe Grüße,
Michael

Hallo,

bin zurzeit aus zeitlichen und technischen Gründen nicht in der Lage, die Frage zu beantworten. Ich hoffe, dass jemand anders hilft.

Tut mir leid, Entschuldigung!

Wir sprechen hoffentlich von VB6 - in VB.NET bin ich leider nicht (mehr) so fit!
Ich habe für VB6 ein kleines Demo geschrieben.
Du brauchst eine Form mit text1 und combo1.
Es arbeitet mit Hilfe der einer Datei c:\TEST.txt in welcher Zeilenweise die Einträge stehen. Diese muss mit dem Texteditor erstellt selbst werden.
Die Datei wird in ein Array (maximale Größe 101 Einträge) und in die Combobox eingelesen. Wird jetzt etwas in die Textbox geschrieben, wir das Array durchsucht und bei Übereinstimmung der gefundene Eintrag in die Kombobox kopiert. Falls Du VB.NET brauchst, könnte der Code auch helfen:

Dim strArrEintrag(100) As String
Const cstrFile = „C:\TEST.txt“

Private Sub Form_Load()
Dim strInhalt As String
Dim intIndex As Integer

Combo1.Clear
intIndex = 0

Open cstrFile For Input As #1

While Not EOF(1)
Line Input #1, strInhalt
strArrEintrag(intIndex) = strInhalt
intIndex = intIndex + 1
Combo1.AddItem strInhalt
Wend
Close #1

End Sub

Private Sub Text1_Change()
Dim intIndex As Integer

For intIndex = 0 To 100
If InStr(1, strArrEintrag(intIndex), Text1.Text) Then
Combo1.Text = strArrEintrag(intIndex)
End If
Next intIndex
End Sub

Hallo

Hier ein Beispiel wie man ihr Problem lösen könnte.
Option Explicit

Option Explicit

'============================ Start entnommener Code ============================
’ Code zum Einlesen einer Textdatei entnommen bei folgendem Link
http://www.vbarchiv.net/tipps/tipp_298-textdateien-s…
'--------------------------------------------------------------------------------------
Private Sub cmdOpen_Click()
’ Dateiauswahl
On Local Error Resume Next
With CommonDialog1
.CancelError = True
.Filter = „Textdatei (*.txt)|*.txt|“ & _
„alle Dateien (*.*)|*.*“
.ShowOpen

’ wenn nicht auf Abbrechen geklickt wurde
If Err = 0 Then
’ Datei-Inhalt einlesen und anzeigen
txtTextdatei.Text = ReadFile(.FileName)
End If
End With
End Sub

’ Beliebige Datei auslesen und
’ Inhalt als String zurückgeben
Private Function ReadFile(ByVal sFilename As String) _
As String
Dim F As Integer
Dim sInhalt As String

’ Prüfen, ob Datei existiert
If Dir$(sFilename, vbNormal) „“ Then
’ Datei im Binärmodus öffnen
F = FreeFile: Open sFilename For Binary As #F

’ Größe ermitteln und Variable entsprechend
’ mit Leerzeichen füllen
sInhalt = Space$(LOF(F))

’ Gesamten Inhalt in einem „Rutsch“ einlesen
Get #F, , sInhalt

’ Datei schliessen
Close #F
End If

ReadFile = sInhalt
End Function
'========================= Ende entnommener Code ================

'Code zum Suchen von Zeichen in einem Text und Markieren des gefundenen Textes
'nach Beendigung mit der Enter Taste.
'bei jedem Zeichen wird überprüft, ob der eingegebene String in der Textdatei enthalten ist,
'wenn nein, wird der Hintergrund rot eingefärbt.
'Bei Enter wird der gesuchte Text in der Texdatei blau eingefärbt.

'Erstellen Sie ein Projekt wie in oben angegebenen Link beschrieben.
'Legen Sie zusätzlich auf die Form eine Textbox und nennen Sie sie txtSuche
Private Sub txtSuche_Change()
If InStr(1, txtTextdatei.Text, txtSuche.Text) > 0 Then
txtSuche.BackColor = vbWhite
Else
txtSuche.BackColor = vbRed
End If
End Sub

Private Sub txtSuche_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
If InStr(1, txtTextdatei.Text, txtSuche.Text) > 0 Then
txtTextdatei.SelStart = InStr(1, txtTextdatei.Text, txtSuche.Text) - 1
txtTextdatei.SelLength = Len(txtSuche.Text)
txtTextdatei.SetFocus
End If

'verhindert ein Piepen
KeyAscii = 0
End If
End Sub

Aus Performancegründen solltest du eine Datenbank einsetzen. Textdateien sind sehr langsam. Beschleunigen kannst du die nur, wenn du die komplett in den Speicher lädst, bevor du sie benutzt. Datenbanken kann man außerdem bequemer durchsuchen.

wer-weiss-was ist nicht dazu gedacht, sich von Fachleuten ein fertiges Programm schreiben zu lassen. Grundsätzlich antworte ich gern auf eine konkrete Frage. Z.B. wie du mit Visual Basic Daten aus einer Textdatei auslesen kannst oder auch in sie hineinschreiben kannst.

Gruß

Manuel

Hallo,

Du könntest vorab alle Wörter der Textdatei in die Combobox einlesen/füllen und den Eigenschaftswert MatchEntry der Combobox auf fmMatchEntryComplete und schon werden die Wörter angezeigt.

Eine ComboBox wird mit der .AddItem-Methode befüllt, eine Textdatei wird über die >>Open>Close