Seite 1 von 1

[Kein Syntax-Check] DataSection

Verfasst: 23.12.2006 17:01
von Leonhard
Bei Data-Section werden bestimmte Typen nicht auf richtigkeit überprüft. Es wird nicht überprüft, ob ich z.B. einem Long-Typ einen String zuweise oder ob ich einem Long-Typ einen Fload-Wert zuweise (wobei bei Fload-Wert nach dem Komma alles abgeschnitten wird). Es wird aber überprüft, ob ein Intergreter größer als der Typ zugewiesen wird (Data.b 321532 gibt Fehler). Mann kann aber z.B. bei Data.s Char-Werte zuweisen (Data.s 64,53,23), was eigendlich nützlich ist.

Jetzt mal etwas Code:

Code: Alles auswählen

DataSection
  Label:
    ;/ das funkioniert
    Data.s 64,53,23, "String"
    Data.l 432, 34.543 ;/ Nach Komma wird weggeschnitten
    
    ;/ das ist seltsam
    Data.b 255, -128 ;/ Der Wertbereich liegt laut Hilfe zwischen -128 und +127
    
    ;/ das funkioniert nicht
    Data.l "" ;/ Dies müste ein PureBasic-Fehler sein. Der Compiler arbeitet das einfach durch
    Data.b 256 ;/ Der Fehler sagt: "Overflow error: a 'byte' value (.b) must be between -128 and +255", ist ein Byte in PureBasic größer als 255 ?
EndDataSection

Verfasst: 23.12.2006 17:15
von Kaeru Gaman
ein byte kann 256 verschiedene werte haben.

entweder vorzeichenbehaftet von -128 bis 127,
oder vorzeichenlos von 0 bis 255.

der compiler läßt dir die freiheit zu entscheiden, ob du mit oder
ohne vorzeichen in deine Datazeilen schreiben willst,
deswegen akzeptiert er werte von -128 bis 255.

Verfasst: 23.12.2006 17:16
von ts-soft
Für die DataSection gibts keinen Syntax-Check, unabhängig von PB4
Wenn Du Dir ein paar Gedanken über den Sinn der DataSection machst,
verstehste auch, das dies nicht besonders sinnvoll wäre.

Dieser Bereich wird "unverändert" in die Datasection des generierten
ASM-Sources übernommen.

Verfasst: 23.12.2006 19:29
von MVXA
> ein byte kann 256 verschiedene werte haben.
ungeschickt formuliert. Ich würde es eher so nenen: Ein Byte kann nur
einen Wert speichern, der eine Zahl sein kann und von 0 bis 255 geht.

Eine Array von Bytes kann dann 256 verschiedene Werte sichern ;).

Verfasst: 23.12.2006 21:18
von Kaeru Gaman
nö..

setze "annehmen" anstatt "haben" dann gehts.

"ein Byte kann 256 unterschiedliche Werte annehmen"

worauf es mir ankam is ja wohl klar

Verfasst: 24.12.2006 17:18
von mk-soft
Data.l 432, 34.543 ;/ Nach Komma wird weggeschnitten
Logisch, Long gleich Ganzzahl. 0 .. 2^32-1 (ohne Vorzeichen)

FF :wink: