Stringbefehle - Bestimmten Text aus Text
Übersicht

![]() |
N0XBetreff: Stringbefehle - Bestimmten Text aus Text |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hey!
Ich möchte Text zwischen zwei Zeichen auslesen. Warum funktioniert diese Zeile nicht? Code: [AUSKLAPPEN] Mid(rLine$,Instr(rLine$,",")+1,Instr(rLine$,",",Instr(rLine$,","))-Instr(rLine$,Chr(34))-2)
Der Text aus dem gelesen wird: Code: [AUSKLAPPEN] Wagen["models\wagen.3ds",0,200,0]
Es sollen die Koordinaten ausgelesen werden. (Nach dem ",) Die Zeile wird dreimal aufgerufen, und speichert die Werte in Variablen. Mfg, N0X |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Und mit welcher Variable "schiebst" du Instr![]() Alles auf einzelne Zeilen & Variablen ausdehnen, Debuggen und dann wenn möglich/nötig auf eine Zeile reduzieren. |
||
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) |
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie kann ich von einer Leerzeile solange Zeilen auslesen bis wieder eine Leerzeile erreicht ist?
(handelt sich um .txt-Datei!) Habe das so versucht, klappt aber nicht: Code: [AUSKLAPPEN] Repeat
rLine$ = ReadLine(file) o.TObject = New TObject k1 = Instr(rLine$,",") k2 = Instr(rLine$,",",k1+1) k3 = Instr(rLine$,",",k2+1) k4 = Instr(rLine$,",",k3+1) k5 = Instr(rLine$,",",k4+1) k6 = Instr(rLine$,",",k5+1) p1 = Instr(rLine$,Chr(34)) p2 = Instr(rLine$,Chr(34),p1+1) o\id$ = Left(rLine$,Instr(rLine$,"[")-1) o\path$ = Mid(rLine$,Instr(rLine$,Chr(34))+1,Instr(rLine$,Chr(34),Instr(rLine$,Chr(34))+1)-Instr(rLine$,"[")-2) o\pos_x# = Mid(rLine$,k1+1,k2-p2-2) o\pos_y# = Mid(rLine$,k2+1,k3-k2) o\pos_z# = Mid(rLine$,k3+1,k4-k3) o\size_x# = Mid(rLine$,k4+1,k5-k4) o\size_y# = Mid(rLine$,k5+1,k6-k5) o\size_z# = Mid(rLine$,k6+1,Instr(rLine$,"]")-k6) DebugLog(o\id$+" "+o\path$+" "+o\pos_x#+" "+o\pos_y#+" "+o\pos_z#+" "+o\size_x#+" "+o\size_y#+" "+o\size_z#) Until rLine$="" Und die Txt-Datei sieht so aus: Code: [AUSKLAPPEN] Wagen["models\cart.3ds",100,401.5,100,1,1,1]
Wagen["models\cart.3ds",50,401.5,50,1,1,1] Mfg, N0X |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
blackgecko |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: klappt aber nicht ist keine Fehlerbeschreibung.
Was klappt nicht? Wird der String falsch zerschnitten, wird er gar nicht zerschnitten, kommt eine Fehlermeldung, was wird im DebugLog ausgegeben? In deinem Textdatei-Auszug sehe ich keine Leerzeilen. |
||
So long and thanks for all the fish.
Fedora 17 | Windows 7 || BlitzPlus | BlitzMax Rechtschreibflame GO!!! Deppenapostroph | SeidSeit | Deppenakzent | DassDas | Deppenleerzeichen | TodTot | enzigste.info - Ja, ich sammel die. |
![]() |
N0X |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also, bei der Txt-Datei sind (eigentlich) vor dem Text und nach dem Text zwei Leerzeilen.
Ich bekomme folgenden Fehler: "Parameter must be positive" In Zeile: "o\id$ = Left(rLine$,Instr(rLine$,"[")-1)" Mfg, N0X //EDIT: Liegt daran, dass die letzte Zeile (also die leere) auch noch gelesen wird. Habs mit Code: [AUSKLAPPEN] If rLine$="" Then Exit nach Code: [AUSKLAPPEN] rLine$ = ReadLine(file) gelöst.
Gibts auch schönere Lösungen? Mfg, N0X |
||
Projekte: |Tibario| http://www.blitzforum.de/worklogs/325/ | 5% |
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, ich nehme an es liegt daran, dass du die leere Zeile auch einliest weil bei (Instr(rLine$,"[")-1) ein negativer Wert herauskommt der dann Left übergeben wird.
Ich verwende auch immer deine Lösung - muss nicht heißen, dass sie schön ist, aber sie ist effizient. mfg Thunder |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group