Brauche Hilfe

GeNeRaL

Mitglied
Hi Leute,

wie kann ich das machen wenn ich mein vb-programm hab indem ich irgendein text eingeben kann, in einem textfeld, und wenn ich dann auf den startbutton go klick, das er aus einer extra textdatei, die in dem gleichen ordner ist, die zeile heraussucht, die mit dem wort beginnt und dann den entsprechenden text der bei dem wort steht in einem anderem textfenster anzeigt, also die textdatei sieht so aus

!hallo
hi ich güße dich

!tschüss
aufwiedersehen

hierbei sollte !hallo oder !schüss das schlüsselwort sein das man eingibt und der darunterstehende text der text sein der in dem textfenster angezeigt wird.
 
Also ich würde die Datei schon mal etwas anders aufbauen, und zwar so:

!hallo;hi ich güße dich
!tschüss;aufwiedersehen
!wie;wie geht es dir
!weg;bin mal schnell weg

usw.

wobei vorne immer dein sog. Kurzbefehl steht und dann ein Trennzeichen egal ob "," oder ";" oder sonstwas, es sollte ein Zeichen sein, das du sonst nicht im Text verwendest. Danach steht dann dein Text.

Jetzt öffnest du die Datei und mit ein paar String-Funktionen bastelst du das dann zusammen.
Beispiel Code:(Du brauchst ein Button und 2 Textfelder)


Dim Eingabe As String
Dim Ausgabe As String
Dim i As Integer
Dim z As Integer
Dim zeile As String

Private Sub Command1_Click()
Eingabe = Text1.Text 'Dein eingegebener Suchtext
Open App.Path & "\testfile.txt" For Input As #1
Do While Not EOF(1) 'Solange das Dateiende erreicht ist
Line Input #1, zeile '<- dort steht jetzt die komplette
'Zeile drin
For i = 1 To Len(zeile)
If Mid(zeile, i, 1) = ";" Then ' dein Trennzeichen
z = i
Exit For
End If
Next i
If Left(zeile, z - 1) = Eingabe Then
'nun wird der Teil bis zum ; mit dem Eingabefeld verglichen
Ausgabe = Right(zeile, Len(zeile) - z)
End If
Loop
Close #1
Text2.Text = Ausgabe
End Sub

Ich hoffe das war etwas verständlich, habe das selbst ausprobiert und es geht. Solltest du noch Fragen haben, dann meld dich einfach wieder.

Gruss Homer
 
Thanks

Hi,
danke genau soetwas habe ich gesucht, und es geht auch echt klasse, danke,
hab da aber noch ne frage wie kann ich das jetzt erweitern, das wenn er den text nicht findet, den man zum suchen eingibt das dann eine msg-box erscheinnt in der dann steht suche nicht erfolgreich.

thx,
cu
 
Pack einfach in das IF hier noch ein ELSE mit rein:

If Left(zeile, z - 1) = Eingabe Then
'nun wird der Teil bis zum ; mit dem Eingabefeld verglichen
Ausgabe = Right(zeile, Len(zeile) - z)
Else 'DAS IST NEU ***********************************
MsgBox "Nichts gefunden!", vbCritical, "Fehler"
End If


Gruss Homer
 
@homer : die Abfrage wird glaube ich so nicht funktionieren, da bei jeder Zeile überprüft wird, ob es der entsprechende Eintrag ist. Soll heissen, wenn ich "!wie" eingebe, dann sagt er schon bei "!hallo", dass nichts gefunden wurde. Deshalb sollte die entsprechende Abfrage erst kommen, wenn die Textdatei komplett durchgearbeitet wurde. Hier ist mal meine überarbeitete Version von deinem Beispiel:

------------------------------------------------------------------
Private Sub Command1_Click()

Dim sEingabe As String
Dim vInhalt As Variant
Dim sZeile As String
Dim fGefunden As Boolean

sEingabe = Text1.Text 'Dein eingegebener Suchtext
fGefunden = False 'standardmäßig haste erstmal nix gefunden

Open App.Path & "\testfile.txt" For Input As #1

Do While Not EOF(1) 'Solange das Dateiende erreicht ist

Line Input #1, sZeile '<- dort steht jetzt die komplette Zeile drin

vInhalt = Split(sZeile, ";") 'hier splitten wir die Zeile genau am Semikolon
'in vInhalt(0) steht alles vor dem ";" -- Eingabe
'in vInhalt(1) steht alles hinter dem ";" -- Ausgabe

'hier prüfen wir, ob wir schon den passenden Eintrag gefunden haben
If vInhalt(0) = sEingabe Then
'wenn der Eintrag gefunden wurde
fGefunden = True 'merken wir uns, dass wir was gefunden haben
Exit Do 'gehen aus der Schleife, da wir den rest ja nicht mehr durchsuchen müssen
End If

Loop

Close #1

'prüfen, ob etwas gefunden wurde
If fGefunden = True Then
Text2.Text = vInhalt(1) 'wenn ja, natürlich ausgeben
Else
MsgBox "Nix gefunden" 'wenn nicht, dann darauf hinweisen
End If

End Sub
------------------------------------------------------------------

Gruß
 
Danke

Hi, danke für euere antworten, hat mir sehr geholfen, aber wie könnte ich das ändern, das er statt der textdatei im gleichen ordner eine textdatei im internet einlist?
 
@ netzbazille
Sorry aber das mit der MsgBox hab ich erst danach eingefügt, man müsste natürlich am Ende der Schleife abbrüfen, ob die Ausgabe-Variable leer ist. War mein Fehler, hab das auch nicht getestet sonder einfach hier eingefügt. Aber meine 1. Lösung funktioniert auf alle fälle und war nur ein Grundgedanke, denn ich in 5-10 Minuten ohne schnick-schnack mal schnell gemacht habe. Aber beim Testen kommt man ja recht schnell drauf, das das mit der MsgBox in der Schleife Quatsch ist. - Obwohl, damit kann man ja den Anwender ärgern - *g*

@ GeNeRaL
Dazu müsstest du warscheinlich erstmal die Datei herunterladen. Und dann öffnen. Ich kann mich aber auch täuschen, da ich von Internet-Programmierung in VB net so viel versteh. Aber ich denke mit dem WinSock Steuerelement kann man da so einiges machen.

Gruss Homer
 
Hilfe

Hi leute,

könnte mir vieleicht jemand helfen?
undzwar wie muss ich das fettgedruckte vom darauffolgenden code umwandeln, damit er eine textdatei ausm internet einliest?

Private Sub Command1_Click()

Dim sEingabe As String
Dim vInhalt As Variant
Dim sZeile As String
Dim fGefunden As Boolean

sEingabe = Text1.Text 'Dein eingegebener Suchtext
fGefunden = False 'standardmäßig haste erstmal nix gefunden

Open App.Path & "\testfile.txt" For Input As #1

Do While Not EOF(1) 'Solange das Dateiende erreicht ist

Line Input #1, sZeile '<- dort steht jetzt die komplette Zeile drin

vInhalt = Split(sZeile, ";") 'hier splitten wir die Zeile genau am Semikolon
'in vInhalt(0) steht alles vor dem ";" -- Eingabe
'in vInhalt(1) steht alles hinter dem ";" -- Ausgabe

'hier prüfen wir, ob wir schon den passenden Eintrag gefunden haben
If vInhalt(0) = sEingabe Then
'wenn der Eintrag gefunden wurde
fGefunden = True 'merken wir uns, dass wir was gefunden haben
Exit Do 'gehen aus der Schleife, da wir den rest ja nicht mehr durchsuchen müssen
End If

Loop

Close #1

'prüfen, ob etwas gefunden wurde
If fGefunden = True Then
Text2.Text = vInhalt(1) 'wenn ja, natürlich ausgeben
Else
MsgBox "Nix gefunden" 'wenn nicht, dann darauf hinweisen
End If

End Sub
 
Zurück