Mehrere Werte pro Zeile auslesen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

lux0r

Betreff: Mehrere Werte pro Zeile auslesen

BeitragDi, Okt 26, 2010 1:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier meine neue Frage, ich habe bereits gelernt wie man INI Dateien parst und das funktioniert wunderbar. Nun nimmt mich wunder wie ich eine solche Datei Zeile-für-Zeile parse und jeder Wert innherhalb der Zeile als Float weiterverwenden kann. Ich habe diese Datei:

Code: [AUSKLAPPEN]
1.00, 1.00, 1.00
2.00 , 2.00, 2.00
1.00, 1.00, 1.00


Also, 3 Zeilen mit je 3 Werte pro Zeile. Die drei Werte möchte ich als Float wiederhaben um sie weiter zu verwenden.

Folgende Funktion habe ich jetzt:

BlitzMax: [AUSKLAPPEN]
Function LoadWorld:String (path:String)
Local File:TStream = ReadStream (path:String)
If File = Null Then RuntimeError( "Datei wurde nicht gefunden..." )
Local FileData:String
While Not File.Eof()
Local CurrentLine:String = ReadLine (File:TStream)
FileData = Filedata:String + CurrentLine:String
Print FileData
Wend

CloseStream (File:TStream)
Return FileData:String
End Function


Jetzt erscheint im Output folgendes:

Code: [AUSKLAPPEN]
1.00, 1.00, 1.00
1.00, 1.00, 1.002.00 , 2.00, 2.00
1.00, 1.00, 1.002.00 , 2.00, 2.001.00, 1.00, 1.00


Wie man sieht werden die Zeilen wiederholt und ich habe auch den Line break nicht hinbekommen. In diesem Thread wird Split verwendet, diese Funktion ist bei mir jedoch nicht vorhanden um die Zeilen zu trennen.

Ich versuche das jetzt schon seit zwei Stunden und so langsam kommt frust auf Confused
Wäre froh wenn mir da jemand perspektive verleihen kann wie ich das anstellen soll.

Xeres

Moderator

BeitragDi, Okt 26, 2010 7:08
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzMax =! BlitzBasic

Also Entweder du gibst die Zeilen Zeilenweise aus...
BlitzMax: [AUSKLAPPEN]
While Not File.Eof()
Local CurrentLine:String = ReadLine (File:TStream)
' [...]
Print CurrentLine
Wend

Oder du addierst die Zeilen wieder zusammen und addierst einen Zeilenumbruch - dann darfst du das aber nicht in der Schleife ausgeben (du machst gerade: Zeil1 + Zeile 1+2 + Zeile 1+2+3...)

BlitzMax: [AUSKLAPPEN]
Local FileData:String
While Not File.Eof()
Local CurrentLine:String = ReadLine (File:TStream)
FileData:+CurrentLine:String + "~n"
Wend
Print FileData


Split ist eine Methode und der simpelste Weg, die Zahlen zu extrahieren - wieso sollte die bei dir nicht vorhanden sein? Demoversion von Anno Domine?
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)

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Okt 26, 2010 18:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab das bei meiner SGG mit globalen Variablen gemacht. Man gibt einen Schlüsselwert an, und die Funktion trägt dann die Werte in bis zu acht globale Variablen ein. Wie man es macht, hängt letztendlich vom Verwendungszweck ab. Bei drei Werten finde ich persönlich das über globalen zu regeln jedoch zu ''übertrieben''.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group