Data/Read problem

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Dreadnough

Betreff: Data/Read problem

BeitragFr, Feb 11, 2011 16:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
Ich habe ein problem mit der data/read ausführung, Im tutorial wird ja gesagt man soll Felder bauen um größere datenmenge verarbeiten zu können, und das man dies am besten mit einer for schleife macht weil das die daten schnell füllt. nun hab ich es so gemacht.

Code: [AUSKLAPPEN]
Data 363, 241, 345, 123, 564, 675, 786, 894, 234, 257, 208, 976, 768, 467, 977, 757, 234, 546, 752, 345
Read A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T
Dim Feld(20)
For I=1 To 20
 Read Feld(I)
Next
WaitKey


Das kommt mir aber spanisch vor, er zeigt immer den fehler nach der ausführung "out of data" ist da irgendwas falsch?

ToeB

BeitragFr, Feb 11, 2011 16:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja du liest das Data-Feld 2 mal aus. Da Blitz aber versucht, das nächste Datafeld auszulesen, gibt es einen Fehler, denn das gibt es ja gar nicht. Also gibt es dafür den Befehl Restore, damit kannst du mithilfe eines Sub-Programmes das Datenfeld wieder von vorne Auslesen. Beispiel :
Code: [AUSKLAPPEN]
.Daten1
Data 1, 2, 3, 4

.Daten2
Data 5, 6, 7, 8

Restore Daten2
Read E, F, G, H

Restore Daten1
Read A, B, C, D


mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!
 

Dreadnough

BeitragFr, Feb 11, 2011 23:05
Antworten mit Zitat
Benutzer-Profile anzeigen
... Irgendwie klappt das nicht, Ich bekomm jetzt andauernd den fehler "Array Index out of bounds".

Hier der Code


Code: [AUSKLAPPEN]
Dim Feld(0)
.Daten1
Data 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
.Restore1
Read A, B, C, D, E, F, G, H, J, K
For I=1 To 10
 Read Feld(I)
Next

Xeres

Moderator

BeitragFr, Feb 11, 2011 23:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Du erstellst Feld mit Platz für einen Wert, willst aber 10 einfüllen - da macht die Fehlermeldung doch Sinn, oder nicht?

Edit: Da du die Variablen A,B,C... usw. als erstes befüllst, bekommst du als nächstes eine Fehlermeldung, dass nicht mehr genug Werte per Read gelesen werden können...
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)

skey-z

BeitragFr, Feb 11, 2011 23:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Im Endeffekt ist es ganz einfach, nehmen wir dein erstes Beispiel
Code: [AUSKLAPPEN]

Data 363, 241, 345, 123, 564, 675, 786, 894, 234, 257, 208, 976, 768, 467, 977, 757, 234, 546, 752, 345
Read A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T
Dim Feld(20)
For I=1 To 20
 Read Feld(I)
Next
WaitKey


und wandeln es in eine Sinnvolle Ausführung um
BlitzBasic: [AUSKLAPPEN]

Dim Feld(19) ;Da es bei 0 anfängt, also 0-19=20 Einträge hat

Restore daten

For i = 0 To 19
Read Feld(i)
Next

For i = 0 To 19
Print "Feld(" + i + "): " +Feld(i)
Next

WaitKey()

.daten
Data 363, 241, 345, 123, 564, 675, 786, 894, 234, 257, 208, 976, 768, 467, 977, 757, 234, 546, 752, 345


.daten ist ein Label vom Namen daten, du kannst auch mit Goto/Gosub zu einem solchen Label springen, aber das ist ein anderes Thema und hat mit Date/Read nichts am Hut

mit Restore daten setzt du den Lesezeiger an die Position von diesem Label
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group