# Mit VB Textdatei durchsuchen



## Arnt (6. Februar 2008)

Hallo,

ich möchte mit Visual Basic eine Textdatei (test.txt) nach dem Wort "Datei" durchsuchen. Das Wort ist mehrmals enthalten. Das Wort wird immer von einer gleichlangen Zeichenkette gefolgt, z.B. Datei=123456.

Visual Basic soll nun die Zahlen "123456" suchen und anschließend eine Website z.B. http://www.abc.de/id=123456 öffnen.

Dann soll der nächste Eintrag "Datei" gesucht werden (z.B. 234567) und die Website http://www.abc.de/id=234567 angezeigt werden. usw.

Wäre klasse, wenn mir jemand helfen könnte.

Vielen Dank!


----------



## Alex F. (6. Februar 2008)

instr ist die funktion mit der man nach wörtern / Zeichenketten suchen kann.
Hinweise Dateien einlesen findest du im Forum zu Hauf

Grüsse bb


----------



## Dörti.Hermi (6. Februar 2008)

probiers mal mit Mid(string, startindex, length). diese funktion liefert dir einen teil eines strings. genauere anleitung --> google


----------



## Armenia (15. Februar 2010)

Hallo,

entschuldigt diesen Beitrag/Frage zu diesem älteren Thema.
Ich habe jedoch folgendes Problem:

Eine Textdatei enthält eine Zeile in der das Wort 'Data_Block' steht, hinten dran steht in Anführungszeichen ein Name
Bsp: Data_Block "Herbert"

Meine frage nun wie kann ich mir diese Zeile in einer Textdatei suchen lassen und mir nur das herrausnehmen was in Anführungsstriche steht. Da dieser Code für verschiedene Anweisungen angewandt werden soll sollte also der Name als string abgespeichert werden können, um diese textdatei zB. mit diesem Namen abzuspeichern.

Das suchen habe ich folgend gelöst:

Input #sourceFile, varsearch
dataName = Left (varsearch, 10)

if dataName = "DATA_BLOCK" then
msgBox "Richtige zeile gefunden"
end if

nur das rausfiltern des Names stellt sich mir als zu großes Problem dar!

Kann mir bitte jemand Helfen?

gruss und danke im Vorraus
Armenia


----------



## Yaslaw (15. Februar 2010)

Mit Regulären Ausdrücken. Ist nicht ganz einfach. Ich habe darum dir hier ein kleines Beispiel erstellt

Die vielen "" dürfen dich nicht erschrecken. 2 " innerhlab eines Strings stehen für ein "....

```
Public Sub testRegExp()
    Dim r As New regExp
    Dim s As String
    
    s = "Data_Block ""Herbert"""
    r.Pattern = "Data_Block \""([^\""]+)\"""

    If r.Test(s) Then
        Debug.Print r.Execute(s).Item(0).SubMatches(0)
    End If
End Sub
```


----------



## Armenia (15. Februar 2010)

Hallo yaslaw,
danke für deine schnelle Antwort! ... Leider verstehe ich die Syntax nich ganz.

Für was steht die deklaration 'Dim r As New regExp'?
und was bewirkst du mit den Befehlssatz: 
	
	
	



```
r.Pattern = "Data_Block \""([^\""]+)\"""
```

Andere Frage die sich mir in dem zusammenhang stellt: Kann ich nach erreichen eines Textdateiendes also wenn EOF erreicht wieder an den anfang einer Textdatei springen ohne über die amateurlösung: schließe und öffne erneut anweisung zu gehen?


Gruss Armenia


----------



## Yaslaw (15. Februar 2010)

RegExp.. Schande über mein Haubt. Wollte ich doch noch was dazu schreiben und habs vergessen.

Ich habe eine Refernz auf die Klasse 'Microsoft VBScript regulare Expressions 5.5' gesetzt,
RegExp ist dann ein VB-Klasse für Reguläre Ausdrücke. Also kompliziertere Such und Ersetzstrings.

"Data_Block \""([^\""]+)\""" ist ausgeschrieben so und stellt den Suchpattern dar

```
Data_Block \"([^\"]+)\"
```
Wir suchen also den Text "Data_Block" gefolgt von einem Leerzeichen, einem " dann mehr als ein Zeichen das kein " ist (dieser Teil ist in runden Klammern und stellt somit unseren gesuchten String dar). Am schluss wieder ein ".

Genauere Infos zu Regulären Ausdrücken findest du im Internet.


----------

