Hallo WF,
auch ein SPACE kann ein trennzeichen sein...
probier mal diese proc:
Code: Alles auswählen
Procedure.l GetAscNum()
EODF.l = 0 ; selbstdefinierte Variablen,
outp.l = 0 ; nur zur verdeutlichung vordefiniert,
inp.b = 0 ; namen sind beliebig
Repeat
inp = ReadByte() ; nächstes byte aus datei holen
Until inp >= 48 And inp <= 57 ;ist es eine ziffer?
outp = (inp-48) ; dann beginnt die zahl
Repeat ; schleife für komplettes datenfeld
inp = ReadByte() ; nächstes byte aus datei holen
If inp >= 48 And inp <= 57 ; ist es eine ziffer ?
outp * 10 ; bisheriges eine stelle nach links schieben
outp + (inp-48) ; 1-er stelle addieren
Else ; keine ziffer?
EODF = 1 ; als Feld-Trenner ansehen
EndIf
Until EODF = 1 ; ende des datenfeldes erreicht
ProcedureReturn(outp)
EndProcedure
hab ich mit nem mini-file getestet, erwartet
immer genau ein byte, das keine ziffer ist, als trennzeichen.
die einbindung in deine schleife sieht dann so aus:
Code: Alles auswählen
While Eof(1) = 0
i + 1
Spieltag(i) = GetAscNum()
Spielmonat(i) = GetAscNum()
Spieljahr(i) = GetAscNum()
For j=1 To 6
Systemzahl(j,i) = GetAscNum()
Next
Zusatzzahl(i) = GetAscNum()
Wend
das konnte ich natürlich nicht testen, da ich ja deine datei nicht habe.
bitte schreibe, wenn fehler auftreten.
PS: sollten zwischen den zahlen verschieden viele leerzeichen stehn, muss das ganze nochmal modifiziert werden...
[EDIT]
habe den code oben schon modifizert,
jetzt können beliebig viele beliebige zeichen zwischen den ziffern stehen.
jede ziffernfolge wird als dezimalzahl ausgelesen, alles andere wird ignoriert, dient nur zur trennung.
Code: Alles auswählen
23/5/1967 654 was hier steht, wird ignoriert! 7 6543, 662 --- 54
wird als ingesamt acht dezimalzahlen eingelesen: 23,5,1967,654,7,6543,662,54
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.