Sylvia hat geschrieben:Danilo hat geschrieben:Schonmal ausprobiert?
byte.b = $FF
Ausser der Zuweisung bringt das auch nichts. Bleibt immer noch signed...!
PB kann's halt nicht.
Darüber brauchen wir nicht zu reden, steht ja sogar in der Referenz
das PB nur vorzeichenbehaftete Datentypen kennt.
Ich fand die Zuweisung aber dringend erforderlich und
konnte das damals durchsetzen - und habe das schon
öfters brauchen können.
Wenn ich schreibe 'byte.b = 255' dann kommt es darauf
an was ich damit machen möchte. Ich kann dieses Byte in
eine Datei schreiben, ich kann den Wert ausgeben:
und noch einiges mehr. Teilweise kann man es normal
wie unsigned verwenden:
Damit hat man wenigstens ein paar mehr Möglichkeiten, als
wenn diese Zuweisung und StrU() nicht möglich wäre.
Zusammen mit der Umwandlung in einen größeren Datentyp
und dem bitweisen UND ist somit für Byte und Word schon
ganz gut was möglich.
Das ändert natürlich nichts daran das PB keine unsigned
Datentypen unterstützt. Man sollte diese Möglichkeiten aber
kennen, da es manchmal recht hilfreich sein kann - mehr
wollte ich damit nicht sagen.
Oftmals ist es einfach eine Sache der Interpretation des
Programmierers ob er den Inhalt der Variable als signed
oder unsigned ansieht.
Der entscheidende Punkt ist dann die Ausgabe, z.B. mit Str() oder StrU().
Auch das ausmaskieren mit dem bitweisen UND sollte ein
PureBasic-Programmierer kennen. Kann vielleicht mal helfen.
Ein kleines Beispiel welches den großen Unterschied zeigt:
Code: Alles auswählen
byte.b = 1
While byte & $FF > 0
Debug StrU(byte.#BYTE)
byte + 1
Wend
Diese Schleife gibt das byte.b aus...von 1 bis 255. Entfernt man
nun das "& $FF" gibt es nur Zahlen bis 127 aus.
Für Dich, Sylvia, ist das natürlich alles normal. Neueinsteiger
bei PB kommen aber meist nicht auf sowas und sollten deshalb
darauf aufmerksam gemacht werden, so daß sie dann wenigstens
ein kleines bißchen besser arbeiten können.
Mir war der Wertebereich damals sehr wichtig für DataSections
in denen ich Bytes habe.
Ohne die Erweiterung der Zuweisungen war das damals nicht
möglich, und das hat mich schon sehr gestört - weshalb es
geändert wurde und uns somit ein paar mehr Möglichkeiten
und Freiheiten gibt.