Aus Datei lesen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Krumu1201

Betreff: Aus Datei lesen

BeitragDi, Okt 16, 2012 2:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe folgenden Code geschrieben:

BlitzBasic: [AUSKLAPPEN]
Global datei$ = ReadFile("daten.txt")



Type feld

Field gelesen$
End Type

Dim felder.feld(220)

For i = 1 To 220
felder(i) = New feld
Next


Repeat



lesen$ = ReadLine(datei)
For i = 1 To 220
felder(i)\gelesen = Mid$(lesen,i,1)


Next



Until Eof(datei)
WaitKey
Print felder(11)\gelesen
WaitKey
For a = 1 To 220
Write felder(a)\gelesen
If a Mod 10 = 0 Then Print
Next
WaitKey
End


Warum steht in felder(11)\gelesen bis felder(220)\gelesen nichts drin?

Die daten.txt sie so aus:

Code: [AUSKLAPPEN]
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111
1111111111


Gruß Krumu1201

BladeRunner

Moderator

BeitragDi, Okt 16, 2012 5:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Fehler liegt in deiner Lesekonstruktion: Du liesst eine Zeile ein (die ja 10 Daten enthält), weisst aber allen 220 Feldern was zu.
Dieses Spiel wiederholst Du dann für alle 22 Zeilen, d.h. Felder 1-10 werden immer mit der neuen Zeile überschrieben, während die dahinter liegenden immer frei bleiben.
Um den Fehler zu umgehen bietet es sich an eine Positionsvariable einzuführen und dann immer nur 10 Feldelemente einzulesen.
for i = pos to pos+10
feld(pos)\gelesen = ...

Die genaue Ausgestaltung lasse ich Dir, man lernt mehr wenn man es selbst macht Wink
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Xeres

Moderator

BeitragDi, Okt 16, 2012 19:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Dieses würde ich noch ändern:
BlitzBasic: [AUSKLAPPEN]
datei$ = ReadFile("daten.txt")
Benutze keine Strings für Dateihandle. Besser wäre:
BlitzBasic: [AUSKLAPPEN]
datei% = ReadFile("daten.txt")
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)
 

Krumu1201

BeitragDo, Okt 18, 2012 16:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die Antworten.

Ich habe es folgendermassen gelöst:

BlitzBasic: [AUSKLAPPEN]
datei% = ReadFile("daten.txt")


BlitzBasic: [AUSKLAPPEN]
	lesen$ = ReadLine(datei)
For s = 1 To 220
For i = 1 To 10
b = Mid$(lesen,i,1)

Next
felder(s)\gelesen = b
Next


Gruß Krumu1201

Xeres

Moderator

BeitragDo, Okt 18, 2012 23:55
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
For i = 1 To 10
b = Mid$(lesen,i,1)
Next

Ist das gleiche wie
BlitzBasic: [AUSKLAPPEN]
b =  Mid(lesen,10,1)

Da du nichts addierst oder Verkettest bleibt in b nur die letzte Aktion der Schleife hängen.
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)

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group