ReadLine und dann anzeigen lassen?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

M0rgenstern

Betreff: ReadLine und dann anzeigen lassen?

BeitragDo, Nov 05, 2009 21:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey Leute, ich hab ein Problem.

Ich will ne TextDatei auslesen lassen und diese dann mit Text3D ausgeben lassen.
Die Textdatei sieht so aus:

Zitat:
1. Platz: gdgfd Punkte: 1665
2. Platz: ggfdgreg Punkte: 4983
3. Platz: ergfdsgre Punkte: 5642
4. Platz: fdsgdger Punkte: 2343
5. Platz: gfdgwegr Punkte: 4365
6. Platz: fdsfref Punkte: 4758
7. Platz: erwfdsfwef Punkte: 7366
8. Platz: gegrtret Punkte: 6864
9. Platz: htrherhtr Punkte: 7019
10. Platz: bfdb egrreg Punkte: 7199


Die habe ich vorher mit einem Programm erstellt.

Jetzt will ich diese Datei mit diesem Programm auslesen und anzeigen lassen:

Code: [AUSKLAPPEN]
AppTitle "Highscore Test"
Graphics3D 1024, 768, 32, 1
SetBuffer BackBuffer()

Global FTimer = CreateTimer(50)
Global PKamera = CreateCamera()
CameraClsColor PKamera,40,40,50

Include "Includes\Draw3D.bb"
DrawInit3D(PKamera)
Origin3D(1024,768)

Global Dateiname$ = "Highscore.txt"
Global Datei
Datei = ReadFile("Highscore.txt")
Global AktZeile$

Global Schriftart = LoadFont3D("Fonts\Babylon1.png",2,2,0) ;Bitmap-Font-Image
Local Align%=1
Local Angle#=0

Repeat
   Cls
   ColorT3D(255,20,20,1)
   
   
   AktZeile$ = ReadLine$(Datei)
   Text3D(Schriftart,-200,300, AktZeile$ ,0,0,0)
   
   
   
   WaitTimer(FTimer)
   RenderWorld
   Clear3d()
   Flip 0

Until KeyDown(1)
End


Ich weiß nicht wo mein Fehler liegt, der Bildschirm bleibt einfach schwarz.

Kann mir vielleicht jemand helfen, bitte?

Lg, M0rgenstern

Xeres

Moderator

BeitragDo, Nov 05, 2009 22:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Nach 10 Frames ist die Datei fertig ausgelesen... Rolling Eyes
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)

M0rgenstern

BeitragDo, Nov 05, 2009 22:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Heißt im Klartext?

Lg, M0rgenstern

Tennisball

BeitragDo, Nov 05, 2009 22:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Komisch, dass da kein anderer Fehler kommt... Da die Textdatei 10 Zeilen hat (oder?), müsste im 11. Schleifendurchlauf ein Fehler kommen.

Also ich würde ja vorher die Datei in einem Array speichern, also
Code: [AUSKLAPPEN]
While Not Eof(file)
Zeilen[xyz] = readline(file)
xyz = xyz + 1
Wend


Und dann mit einer For-Schleife alle durchgehen und anzeigen lassen.


Wenn ich dich richtig verstanden habe.

TimBo

BeitragDo, Nov 05, 2009 22:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

den Highscore würde ich nicht so speicher.
Speicher so :
String(Name) Int(Punkte)
String(Name) Int(Punkte)
String(Name) Int(Punkte)
etc

dann wird das auslesen einfacher und die Datei kleiner.

readstring writestring
readint writeint





Grüßer
TimBo
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.

M0rgenstern

BeitragDo, Nov 05, 2009 22:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich hab das jetzt so umgeschrieben:

Code: [AUSKLAPPEN]
AppTitle "Highscore Test"
Graphics3D 1024, 768, 32, 1
SetBuffer BackBuffer()

Global FTimer = CreateTimer(50)
Global PKamera = CreateCamera()
CameraClsColor PKamera,40,40,50

Include "Includes\Draw3D.bb"
DrawInit3D(PKamera)
Origin3D(1024,768)

Global Dateiname$ = "Highscore.txt"
Global Datei
Datei = ReadFile("Highscore.txt")
Global AktZeile$

Global Schriftart = LoadFont3D("Fonts\Babylon1.png",2,2,0) ;Bitmap-Font-Image
Local Align%=1
Local Angle#=0
Global xyz

Dim Zeilen(20)

While Not Eof(Datei)
   
   Zeilen(xyz) = ReadLine(Datei)
   xyz = xyz + 1
Wend

Repeat
   Cls
   ColorT3D(255,20,20,1)
   
   
   ;AktZeile$ = ReadLine$(Datei)
   For i = 0 To xyz-1
      Text3D(Schriftart,-200,(200-(i*50)), Zeilen(i) ,0,0,0)
   Next
   
   
   
   WaitTimer(FTimer)
   RenderWorld
   Clear3d()
   Flip 0

Until KeyDown(1)
End


Aber er zeigt mir immer nur das erste Zeichen in der Zeile an (also die Zahl)
Weiß jemand woran das liegt?

Lg, M0rgenstern

mpmxyz

BeitragDo, Nov 05, 2009 22:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Dim Zeilen$(20)

Ohne "$" wird das Ausgelesene nur als Integer gespeichert...
Das Array "Zeilen" muss aber ein String-Array sein, damit du den gesamten Zeileninhalt speichern kannst.

mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

M0rgenstern

BeitragDo, Nov 05, 2009 22:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey wow...
Blöder Fehler...
Dankeschön jetzt funktioniert alles.

Vielen Dank.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group