Read - Vermisse Fehlermeldung des Compilers

Fragen und Bugreports zur PureBasic 4.0-Beta.
Benutzeravatar
jear
Beiträge: 288
Registriert: 17.10.2004 01:59
Wohnort: Ammerland

Read - Vermisse Fehlermeldung des Compilers

Beitrag von jear »

Eine Kleinigkeit zwar, die sich aber zur Falle entwickeln kann.
Read liest über Label hinweg und frisst die nächsten Daten.
Erst wenn nichts mehr da ist, dann kommt die Fehlermeldung.

Wäre es nicht sauberer, wenn Read automatisch am nächsten Label stoppen und die Fehlermeldung bringen würde?

Code: Alles auswählen

EnableExplicit

Define.l idx : Dim txt1.s(5) : Dim txt2.s(5)

Restore Label_1
For idx = 0 To 4 : Read txt1(idx) : Debug txt1(idx) : Next

Debug "****"

Restore Label_2
For idx = 0 To 4 : Read txt2(idx) : Debug txt2(idx) : Next

Debug "****"

Restore Label_3
For idx = 0 To 4 : Read txt3(idx) : Debug txt3(idx) : Next

DataSection
Label_1:
Data.s "1Eins" , "1Zwei", "1Drei"
Label_2:
Data.s "2Eins" , "2Zwei", "2Drei"
Label3_:
Data.s "3Eins" , "3Zwei", "3Drei"
EndDataSection
Man ist nie zu alt zum lernen, auch wenn man dabei manchmal alt aussieht!
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ist leider so einfach nicht machbar, da read eine reine pointer-geschichte ist.

auch Data ist ein reines direkt-im-speicher-zur-verfügung-stehen.

du musst also normalerweise selber kontrollieren, wie viele daten du per read einliest...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

>> Wäre es nicht sauberer, wenn Read automatisch am nächsten Label stoppen und die Fehlermeldung bringen würde?
Nein, wer sagt denn, das ich den Label nicht überlesen möchte, weil ich den
dortigen start für etwas anderes brauche.
Das wäre schlimm, wenn es so wäre, wie du wünscht :)

// Nachtrag: ein kleines Beispiel

Code: Alles auswählen

DataSection
  Person:
  Man:
  Data.s "Jens", "Uwe", "Kaeru", ""
  Woman:
  Data.s "Jutta", "Sybille", "Gaby", "Petra", "Sylvia", "-"
EndDataSection

Restore Person
Repeat
  Read temp.s
  If temp <> "" And temp <> "-"
    Debug temp
  EndIf
Until temp = "-"
Debug "------------------------"

Restore Man
Repeat
  Read temp.s
  If temp <> ""
    Debug temp
  EndIf
Until temp = ""
// Beispiel modifiziert
Zuletzt geändert von ts-soft am 22.01.2007 23:08, insgesamt 1-mal geändert.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Sylvia
verheiratet<br>1. PureGolf-Gewinner
Beiträge: 487
Registriert: 29.08.2004 09:42
Wohnort: Old Europe

Beitrag von Sylvia »

ts-soft hat geschrieben:Woman:
Data.s "Jutta", "Sybille", "Gaby", "Petra", "-"
HÄÄÄ ? Und wo bleibt "Sylvia" ??! <)
Basic Pur = PureBasic
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

HUCH :shock:

...wer meldet sich denn da mal wieder...? ;)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Gesperrt