Instr zur Überprüfung der Existenz einer Zeichenkette
Übersicht BlitzBasic Beginners-Corner
boneshakerBetreff: Instr zur Überprüfung der Existenz einer Zeichenkette |
Fr, Mai 16, 2014 14:45 Antworten mit Zitat |
|
---|---|---|
Hallo zusammen,
in meinem aktuellen Projekt geht es darum, eine Textdatei über ReadLine einzulesen (natürlich Zeile für Zeile) und anschließend wird die Häufigkeit einer bestimmten Zeichenkette errechnet. Das habe ich über den Befehl "Instr" gelöst, allerdings scheint es, dass mit meiner jetzigen Lösung immer nur das erste Exemplar der Zeichenkette in einer Zeile gefunden wird und anschließend weiter zur nächsten Zeile gegangen wird... Ich habe bereits versucht es über den Positions-Parameter von Instr versucht, klappt jedoch leider auch nicht. Wie kann ich es lösen, dass mehrere gesuchte Zeichenketten in einer Zeile ausgelesen werden? Hier mein Code: BlitzBasic: [AUSKLAPPEN]
Im Voraus danke und LG., boneshaker |
||
CO2ehemals "SirMO" |
Fr, Mai 16, 2014 16:34 Antworten mit Zitat |
|
---|---|---|
Programmiere momentan nur noch BM, hab da mal ne Funktion geschrieben... BlitzMax: [AUSKLAPPEN] Function CountOcc:Int(str:String, search:String) Ich glaube dein Fehler ist, dass du InStr nicht in einer Schleife ausführst und deshalb nur immer max. 1 Vorkommen zählst... |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
XeresModerator |
Fr, Mai 16, 2014 19:01 Antworten mit Zitat |
|
---|---|---|
@CO2: BlitzMax ist nicht BlitzBasic und darum halte ich es nicht für sinnvoll, den Code im Beginners Corner zu posten.
@boneshaker: Wenn du die Vorkommen zählen willst, brauchst du eine Schleife die abbricht, wenn Instr eine 0 zurück gibt (also wenn die letzte Position gefunden wurde und der gesuchte String nicht weiter vor kommt). Je nach dem wie du zählen willst, musst du die Position um 1 bzw. die Länge des gesuchten Strings nach hinten schieben. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
boneshaker |
Fr, Mai 16, 2014 20:45 Antworten mit Zitat |
|
---|---|---|
Hab mal versucht, eure Ideen umzusetzen:
BlitzBasic: [AUSKLAPPEN]
Leider wird mir wieder eine völlig falsche Zahl ausgegeben. Sieht jemand meinen Fehler? LG., boneshaker |
||
XeresModerator |
Fr, Mai 16, 2014 20:52 Antworten mit Zitat |
|
---|---|---|
Code: [AUSKLAPPEN] Until pos = Len("blablabla")
Das stimmt nicht. Da steht: Beende die Schleife, wenn die Position der Länge des Strings entspricht. Du willst aber aufhören, wenn der String nicht mehr gefunden wurde. Code: [AUSKLAPPEN] Until pos =0
Code: [AUSKLAPPEN] pos = Instr(eingabeline, "blablabla", pos) + Len("blablabla")
Das sieht richtig gedacht aus, macht aber das Falsche. So wird die Position nicht weitergeschoben. Code: [AUSKLAPPEN] pos = Instr(eingabeline, "blablabla", pos+Len("blablabla"))
|
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
boneshaker |
Fr, Mai 16, 2014 22:18 Antworten mit Zitat |
|
---|---|---|
Super danke, hab es noch kurz optimiert, jetzt funktioniert das perfekt!
hab allerdings ein Problem mit dem TCP-Stream: Der Stream wird nie fertig geschrieben (in eine .txt-Datei), am Ende fehlen immer ein paar Zeilen. Ist das ein TCP-Problem? LG., boneshaker |
||
XeresModerator |
Fr, Mai 16, 2014 23:41 Antworten mit Zitat |
|
---|---|---|
Mir wäre es neu, dass man mit einem TCP Stream überhaupt in eine Datei schreiben könnte. Da wäre OpenFile / WriteLine passender. | ||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Übersicht BlitzBasic Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group