Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Wie Text in einer Textdatei suchen und benutzen?

Frage Entwicklung VB for Applications

Mitglied: TerminatorVB

TerminatorVB (Level 1) - Jetzt verbinden

12.10.2010 um 15:40 Uhr, 5010 Aufrufe, 7 Kommentare

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
Mitglied: BigWim
12.10.2010 um 15:52 Uhr
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
Bitte warten ..
Mitglied: TerminatorVB
12.10.2010 um 16:22 Uhr
Kannst du mir vielleicht ein Beispiel für die zweite Möglichkeit "InStr" geben?
Bitte warten ..
Mitglied: bastla
12.10.2010 um 16:25 Uhr
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 "InStr()" aufhalten, sondern "Replace()" verwenden ...
[Edit] Zu flüchtig gelesen und angenommen, es sollte in die Datei geschrieben weden. [/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: TerminatorVB
12.10.2010 um 16:32 Uhr
Alles klar. So sieht ein gewöhnlicher NPC-Script aus:

instance BAU_900_Onar (Npc_Default)
{
------ NSC ------
name = "Onar";
guild = GIL_BAU;
id = 900;
voice = 14;
flags = NPC_FLAG_IMMORTAL;
npctype = NPCTYPE_MAIN;

------ Attribute ------
B_SetAttributesToChapter (self, 4);

------ Kampf-Taktik ------
fight_tactic = FAI_HUMAN_STRONG;

------ Equippte Waffen ------
EquipItem (self, ItMw_1h_Bau_Mace);

------ Inventory ------
B_CreateAmbientInv (self);

------ visuals ------
B_SetNpcVisual (self, MALE, "Hum_Head_FatBald", Face_N_OldBald_Jeremiah, BodyTex_N, ITAR_Vlk_H);
Mdl_SetModelFatness (self, 2);
Mdl_ApplyOverlayMds (self, "Humans_Arrogance.mds");

------ NSC-relevante Talente vergeben ------
B_GiveNpcTalents (self);

------ Kampf-Talente ------
B_SetFightSkills (self, 70);

// ------ TA anmelden ------
daily_routine = Rtn_Start_900;
};

FUNC VOID Rtn_Start_900 ()
{
TA_Sit_Throne (09,00,21,00,"NW_BIGFARM_HOUSE_ONAR_SIT");
TA_Sleep (21,00,09,00,"NW_BIGFARM_HOUSE_UP1_04");
};

Nehmen wir als Beispiel wieder 'name' (Linie 4). Es soll gesucht werden wo Name ist und in diesem Beispiel soll "Onar" ausgegeben werden.
Bitte warten ..
Mitglied: bastla
12.10.2010 um 17:12 Uhr
Hallo TerminatorVB!

Schematisch etwa so:
01.
Dim FileName As String = "D:\Onar.txt" 
02.
Dim SearchFor As String = "name" 'Suchbegriff 
03.
Dim Sep = " = " 'Trennung vom Wert 
04.
Dim EOL As String = ";" 'Zeilenende-Kennung 
05.
 
06.
Dim sr As StreamReader = File.OpenText(FileName) 'Textdatei zum Lesen öffnen ... 
07.
Dim Content As Array = Split(sr.ReadToEnd, vbCrLf) '... und zeilenweise in Array einlesen 
08.
Dim Value As String 
09.
For Each Line In Content 'alle Zeilen durchgehen 
10.
    If InStr(Line, SearchFor & Sep) = 1 And Microsoft.VisualBasic.Right(Line, 1) = EOL Then 'beginnt Zeile mit Suchbegriff + Trennung und endet mit Zeilenende-Kennung? 
11.
        Value = Split(Split(Line, Sep)(1), EOL)(0) 'isolieren des interessierenden Teiles 
12.
        MsgBox(Value) 
13.
    End If 
14.
Next
Zur Erklärung der Zeile 11
In der Variablen "Line" steht für die eingelesene Zeile 4
name = "Onar";"
Die Zeile setzt sich daher zusammen aus:
Suchbegriff ("SearchFor")name
Trennung ("Sep") =
Wert"Onar"
Zeilenende-Kennung ("EOL");

Mit "Split(Line, Sep)" wird zunächst anhand der Trennung " = "geteilt in
Teil 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
Bitte warten ..
Mitglied: TerminatorVB
12.10.2010 um 18:13 Uhr
Ahh. Herzlichsten Dank genau sowas habe ich gesucht, allerdings will ich bei Filename nicht Onar.txt nehmen, weil das ist ja nicht der einzige NPC den es gibt. Ich hatte eigentlich die Idee da dann OpenFileDialog.FileName reinzuschreiben. Das müsste doch funktionieren oder?
Und nochwas: Wie mache ich da dann weiter um die anderen Sachen abzufragen?
Bitte warten ..
Mitglied: bastla
12.10.2010 um 18:38 Uhr
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 ...
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
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Batch & Shell
Powershell - In Textdatei suchen und ersetzen (5)

Frage von Raaja89 zum Thema Batch & Shell ...

Batch & Shell
Text in neue 1. Zeile in Textdatei einfügen (4)

Frage von FuxxLi zum Thema Batch & Shell ...

Microsoft Office
gelöst Wie kann man die Standard-Schriftart bei einfügen von Text in Word 2013 festlegen? (3)

Frage von Rene1976 zum Thema Microsoft Office ...

Batch & Shell
gelöst Suchen und Ersetzen mehrerer Suchbegriffe per Batch (4)

Frage von makroll10 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...