Verständnisfrage zu Mid, Openfile und Highscore

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Eyes_Only

Betreff: Verständnisfrage zu Mid, Openfile und Highscore

BeitragDo, März 14, 2013 17:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ich habe mir Rob's Helihunter Spiel und Quellcode zu Gemüte geführt und mich genauer mit den Highscore-Funktionen beschäftigt.
Da gibt es jedoch eine Sache die ich nicht verstehe, und zwar geht es um den Befehl Mid und was dieser in der zweiten Schleife zu suchen hat, ebenso wie das Exit. Wenn ich den ganzen Block mit mit dem Mid auskommentiere, dann funktioniert das Ganze jedenfalls nicht richtig, weil die highscore.txt dann nicht korrekt geladen wird.

Die highscore.txt ist so aufgebaut, dass zuerst die Punkte stehen, dann ein Leerzeichen und dann der Name, also z.B.: 850 Ballo

Den Code Code: [AUSKLAPPEN]
If Mid(zeile$, i, 1) = " " Then
habe ich so verstanden, dass der nachfolgende Block ausgeführt wird, wenn beim Lesen der Datei ein Leerzeichen gefunden wird. So weit so gut. Doch was passiert danach und wozu das Exit? Kann mir da jmd. helfen?

Und eine Sache noch: liest der Befehl ReadLine nur eine einzige Zeile oder Zeile für Zeile nacheinander alle Zeilen?

Danke!

BlitzBasic: [AUSKLAPPEN]
Dim highscore(11)
Dim highscorename$(11)

; Highscores-Datei laden.
datei = OpenFile("highscores.txt")
For i2 = 1 To 10
If Eof(datei) Then Exit ;wenn Datei leer, dann raus aus Schleife, ansonsten...
zeile$ = ReadLine(datei) ;...lies Zeile aus Datei ein und speichere im String zeile$

For i = 1 To Len(zeile$)
If Mid(zeile$, i, 1) = " " Then ; Wenn er in der Mitte angekommen ist:
highscore(i2) = Mid(zeile$,1,i-1)
highscorename$(i2) = Mid(zeile$, i+1, Len(zeile$))
Exit
EndIf
Next
Next

ZEVS

BeitragDo, März 14, 2013 17:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn die Zeile gelesen wird, weiß man nicht sofort, wo die Punktzahl aufhört und der Name anfängt. Deshalb sucht man nach dem Leerzeichen, dann weiß man es und kann die Zeile auswerten. Hierfür benutzen manche auch Instr.
Wenn die Position des Leerzeichens (als Variable i) bekannt ist, kann man die Punktzahl und den Namen einzeln rausholen und abspeichern. Dann muss die Schleife nicht weiter ausgeführt werden und wird mit Exit abgebrochen.
Zu deiner zweiten Frage: ReadLine liest eine Zeile und stellt den imaginären Cursor in der Datei auf die nächste. Wenn du ReadLine daher zweimal aufrufst, bekommst du beim ersten Mal eine Zeile und beim zweiten Mal die nächste.

ZEVS
 

Eyes_Only

BeitragDo, März 14, 2013 18:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Achso, das macht Sinn, ja.
Dann dient Code: [AUSKLAPPEN]
         highscore(i2) = Mid(zeile$,1,i-1)
         highscorename$(i2) = Mid(zeile$, i+1, Len(zeile$))
also dazu die Position von Name und Punkten zu bestimmen und den Wert der beiden als String abzuspeichern.

Ich denk jetzt habe ich es verstanden.

Danke. Very Happy

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group