Aus einem Text bestimmte Werte auslesen.

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Knyk

Betreff: Aus einem Text bestimmte Werte auslesen.

BeitragSo, Sep 04, 2011 22:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo liebes Forum,
Ich programmiere eigentlich schon länger mit BB habe jetzt aber fast ein Jahr "Pause gemacht" ud stehe gerade voll auf dem Schlauch.
Ich habe folgendes Problem:
Ich habe einen Text der irgendwo mittendrin soetwas wie "wert='xxxxx'" stehen hat. also ca. so:
Zitat:
blablablawert='xxxx'blawert='xxxxxx'blablablablablawert='xxxxxxx'


Ich möchte davon gern eine Liste mit allen XXXXXX ausgeben lassen, scheitere aber gerade daran.

Da ich wie gesagt schon Erfahrung mit blitz habe Edit: hatte ;D bekomme ich das laden des Textes hin und weiss auch, dass ich die analyse mit Instr, mid, left, right machen muss.
Nur wie muss ich die suchroutine schreiben?

(Was doch so eine Pause alles an Wissen verdrängt.... früher konnte ich das mit links...)

Danke

Xeres

Moderator

BeitragSo, Sep 04, 2011 22:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit instr in einer Schleife arbeiten und die Startposition weiterschieben.
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
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Midimaster

BeitragSo, Sep 04, 2011 22:43
Antworten mit Zitat
Benutzer-Profile anzeigen
sinngemäß so (habs icht getestet)

BlitzBasic: [AUSKLAPPEN]
Inhalt$ = OriginalText
Repeat
Local Da% = Instr(Inhalt , "wert=" , Da+1)
If Da=0 Then Exit
Da = Da +6 ; weil es vom Anfang von "wert=" bis um eigentlich gesuchten nochmal 6 zeichen sind
Bis= Instr ( Inhalt, "'" , Da) ; Suche nach dem hinteren Hochkomma -Zeichen
Such$ = Mid$(Inhalt , Da , Bis-Da-1 )
Print Such$
Inhalt = Mid ( Inhalt, Bis)
Forever
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

Knyk

BeitragSo, Sep 04, 2011 23:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe jetzt folgendes:
Code: [AUSKLAPPEN]
a$="wert='"
b$= "'"
file = ReadFile("test.txt")



Repeat

l$=ReadLine (file)

Repeat

f1=Instr(l$, a$, f1+Len(a$))
f2=Instr(l$, b$, f1+Len(b$))
Print f1
Print f2


code$= Mid(l$, f1+Len(a$),f2-f1 )
Print code$
Until f1= 0

Until Eof(file)

Notify "done!"



dieser code gibt die Werte aber immer nur mit 5 Zeichen aus. Warum?

Mein verwendeter Test-Text:
Zitat:
blablablawert='11111c'blawert='222c'blablablablablawert='3333333c'

Midimaster

BeitragMo, Sep 05, 2011 8:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Du darst Len(a$), nicht schon bei der Instr-Suche berücksichtigen, sondern erst die Stelle finden, wo "wert" beginnt, dann aber zur gefundenen Stelle 6 dazuzählen:

BlitzBasic: [AUSKLAPPEN]
a$="wert='"
b$= "'"
;file = ReadFile("test.txt")
Repeat

;l$=ReadLine (file)
l$="blablablawert='abcdef'blawert='ghij'blablablablablawert='klmnopqrst'"
Repeat

F1 = Instr(l$, a$, F1+1)
If F1=0 Then Exit
F1 = F1 + Len(a$)
F2 = Instr(l$, b$, F1)
Print "F1=" + F1 + " F2=" + F2


code$= Mid(l$ , F1 , F2-F1 )
Print "CODE=" +code$
WaitKey()
Forever

Until Eof(file)

;Notify "done!"




Dein Teststring ist auch "ungünstig" gewählt. Durch die Verwendung der gleichen Ziffern, siehtst Du gar nicht, ob bei dem Fehler vorne oder hinten Zeichen fehlen. Dieser Teststring ist klüger:

Code: [AUSKLAPPEN]
blablablawert='abcdef'blawert='ghij'blablablablablawert='klmnopqrst'
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group