[Kein Syntax-Check] DataSection

Fragen und Bugreports zur PureBasic 4.0-Beta.
Benutzeravatar
Leonhard
Beiträge: 602
Registriert: 01.03.2006 21:25

[Kein Syntax-Check] DataSection

Beitrag 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
Zuletzt geändert von Leonhard am 25.07.2007 07:24, insgesamt 1-mal geändert.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
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 »

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.
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
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag 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 ;).
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Data.l 432, 34.543 ;/ Nach Komma wird weggeschnitten
Logisch, Long gleich Ganzzahl. 0 .. 2^32-1 (ohne Vorzeichen)

FF :wink:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Gesperrt