Wie Text in einer Textdatei suchen und benutzen?
Hallo.
Ich arbeite gerne mit Visual Basic und habe auch schon ein Programm geschrieben, was ich auch schon auf "worldofgothic.de" veröffentlicht habe. Hierbei geht es um die Erstellung eines sogenannten NPC-Scripts, mit welchem man im Spiel einen NPC erscheinen lassen kann. Im Programm wurden hauptsächlich Textboxen und Checkboxen verwendet. Speicherfunktion etc. ist alle schon eingebaut. Was mir noch fehlt ist eine Öffnungsfunktion. Ich vermute stark, dafür braucht man einen OpenFileDialog. Wie man den erstellt weiß ich auch schon, aber jetzt geht es darum, dass man in der Text-Datei nach bestimmten Schlüsselwörtern wie 'name = xxx' sucht. Im genannten Beispiel soll das Programm nach 'name = ' suchen und den darauffolgenden Text in die entsprechende Box schreibt. Nur leider weiß ich nicht wie das geht.
Mit freundlichen Grüßen,
TerminatorVB
Ich arbeite gerne mit Visual Basic und habe auch schon ein Programm geschrieben, was ich auch schon auf "worldofgothic.de" veröffentlicht habe. Hierbei geht es um die Erstellung eines sogenannten NPC-Scripts, mit welchem man im Spiel einen NPC erscheinen lassen kann. Im Programm wurden hauptsächlich Textboxen und Checkboxen verwendet. Speicherfunktion etc. ist alle schon eingebaut. Was mir noch fehlt ist eine Öffnungsfunktion. Ich vermute stark, dafür braucht man einen OpenFileDialog. Wie man den erstellt weiß ich auch schon, aber jetzt geht es darum, dass man in der Text-Datei nach bestimmten Schlüsselwörtern wie 'name = xxx' sucht. Im genannten Beispiel soll das Programm nach 'name = ' suchen und den darauffolgenden Text in die entsprechende Box schreibt. Nur leider weiß ich nicht wie das geht.
Mit freundlichen Grüßen,
TerminatorVB
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 152869
Url: https://administrator.de/contentid/152869
Ausgedruckt am: 16.11.2024 um 01:11 Uhr
7 Kommentare
Neuester Kommentar
Grundsätzlich bleiben m. E. nur zwei Möglichkeiten.
Deine Textdatei ist wie eine INI-Datei aufgebaut, dann kannst Du Funktionen nutzen wie ReadProfileString, die Ini-Dateien auslesen
In jedem anderen Fall bleibt nichts anderes übrig, als die Datei zeilenweise zu lesen und nach deinen Schlüsselwörtern zu suchen. Z. B. mit InStr
Markus
Deine Textdatei ist wie eine INI-Datei aufgebaut, dann kannst Du Funktionen nutzen wie ReadProfileString, die Ini-Dateien auslesen
In jedem anderen Fall bleibt nichts anderes übrig, als die Datei zeilenweise zu lesen und nach deinen Schlüsselwörtern zu suchen. Z. B. mit InStr
Markus
Hallo TerminatorVB und willkommen im Forum!
Wäre es nicht sinnvoller, Du würdest vorweg (auszugsweise) ein Beispiel Deiner Textdatei posten?
Ansonsten würde ich mich nicht mit "
[Edit] Zu flüchtig gelesen und angenommen, es sollte in die Datei geschrieben weden. [/Edit]
Grüße
bastla
Wäre es nicht sinnvoller, Du würdest vorweg (auszugsweise) ein Beispiel Deiner Textdatei posten?
InStr()
" aufhalten, sondern "Replace()
" verwenden ...[Edit] Zu flüchtig gelesen und angenommen, es sollte in die Datei geschrieben weden. [/Edit]
Grüße
bastla
Hallo TerminatorVB!
Schematisch etwa so:
Zur Erklärung der Zeile 11
In der Variablen "Line" steht für die eingelesene Zeile 4
Die Zeile setzt sich daher zusammen aus:
Mit "
Teil 0: name
Teili 1: "Onar";
Verwendet wird davon Teil1, deswegen der Zusatz "
Dieses Zwischenergebnis wird nochmals gesplittet, wobei hier als Trennzeichen ";" (EOF) verwendet wird (Annahme: ";" kommt nur am Zeilenende vor) - da das zum Splitten verwendete Zeichen wegfällt, ist das Ergebnis nur noch
Teil 0:"Onar"
Grüße
bastla
Schematisch etwa so:
Dim FileName As String = "D:\Onar.txt"
Dim SearchFor As String = "name" 'Suchbegriff
Dim Sep = " = " 'Trennung vom Wert
Dim EOL As String = ";" 'Zeilenende-Kennung
Dim sr As StreamReader = File.OpenText(FileName) 'Textdatei zum Lesen öffnen ...
Dim Content As Array = Split(sr.ReadToEnd, vbCrLf) '... und zeilenweise in Array einlesen
Dim Value As String
For Each Line In Content 'alle Zeilen durchgehen
If InStr(Line, SearchFor & Sep) = 1 And Microsoft.VisualBasic.Right(Line, 1) = EOL Then 'beginnt Zeile mit Suchbegriff + Trennung und endet mit Zeilenende-Kennung?
Value = Split(Split(Line, Sep)(1), EOL)(0) 'isolieren des interessierenden Teiles
MsgBox(Value)
End If
Next
In der Variablen "Line" steht für die eingelesene Zeile 4
name = "Onar";"
Suchbegriff ("SearchFor") | name |
Trennung ("Sep") | = |
Wert | "Onar" |
Zeilenende-Kennung ("EOL") | ; |
Mit "
Split(Line, Sep)
" wird zunächst anhand der Trennung " = "geteilt inTeil 0: name
Teili 1: "Onar";
Verwendet wird davon Teil1, deswegen der Zusatz "
(1)
"Dieses Zwischenergebnis wird nochmals gesplittet, wobei hier als Trennzeichen ";" (EOF) verwendet wird (Annahme: ";" kommt nur am Zeilenende vor) - da das zum Splitten verwendete Zeichen wegfällt, ist das Ergebnis nur noch
Teil 0:"Onar"
Grüße
bastla
Hallo TerminatorVB!
Wie vorweg angeführt, soll der Ansatz oben eine schematische Darstellung (möglicher Techniken) sein - insbesondere, da mir noch nicht so ganz klar ist, was dann noch weiter passieren soll, musst Du Dir natürlich selbst die entsprechenden Ergänzungen / Änderungen überlegen ...
Grüße
bastla
Wie vorweg angeführt, soll der Ansatz oben eine schematische Darstellung (möglicher Techniken) sein - insbesondere, da mir noch nicht so ganz klar ist, was dann noch weiter passieren soll, musst Du Dir natürlich selbst die entsprechenden Ergänzungen / Änderungen überlegen ...
Wie mache ich da dann weiter um die anderen Sachen abzufragen?
Das ist vor allem Definitionssache: Was sind die "anderen Sachen"? Soferne Du die Zeilen 5 bis 9 meinst, entsprechen diese ja dem obigen Schema, sodass Du den Codeschnipsel als "Function
" mit Übergabe des "Content"-Arrays und des Suchbegriffes und Rückgabe des Wertes verwenden könntest ...Grüße
bastla