!! Nachträgliche Änderung des Themas : 127+1 = -128
!! Die 63 kommen dann durch eine Konvertierung zustande.
Hallo ihr lieben,
bin eben fast aus allen Wolken gefallen.
Habe in der Global Area Eine Variabel als BYTE deklariert, die als Laufvariable benutzt wird und immer
um eins (1) erhöht wird.
Nun konnte ich feststellen, dass nach 127 nicht 128 kommt, sondern -128 !!!!!!!!!!!!!!!!!!!!!!!
Jetzt habe ich herausgefunden, dass es wohl Javatypisch ist, dass Bytes STANDARDMÄSSIG als SIGNED deklariert werden. Gibt es da im B4A einen Switch zum umlegen, dass der Variablentyp BYTE als UNSIGNED deklariert wird ?
Könnte natürlich auch sämtliche Bytes als Integer deklarieren, aber wenn das nicht unbedingt nötig ist, würd ich gerne drauf verzichten. Viel schlimmer ist die Tatsache, dass ich die Grösse des "Schades" noch gar nicht abschätzen kann, da in diesem grossen Projekt viele Variablen als Byte deklariert sind, die zwar nicht alle den vollen Werteumfang benutzen, aber es könnten.
Also, auf den Punkt gebracht:
Ist es von Erel so vorgesehen, dass ein BYTE SIGNED ist oder ist es ein Compilerfehler?
Ich vermute einfach mal , dass es so ist
Aber ich verstehe dann folgendes nicht, bzw. warum es funktioniert
Dim buffer() As Byte
buffer = send.GetBytes("ISO-8859-1")
astreams.send.........
Hier koennen ja AUCH Wertigkeiteb ÜBER 127 genutzt werden, obwohl der Buffer als Byte
deklariert ist. Gibts da Unterschiede ??
Gruss aus Kassel
Holger
!! Die 63 kommen dann durch eine Konvertierung zustande.
Hallo ihr lieben,
bin eben fast aus allen Wolken gefallen.
Habe in der Global Area Eine Variabel als BYTE deklariert, die als Laufvariable benutzt wird und immer
um eins (1) erhöht wird.
Nun konnte ich feststellen, dass nach 127 nicht 128 kommt, sondern -128 !!!!!!!!!!!!!!!!!!!!!!!
Jetzt habe ich herausgefunden, dass es wohl Javatypisch ist, dass Bytes STANDARDMÄSSIG als SIGNED deklariert werden. Gibt es da im B4A einen Switch zum umlegen, dass der Variablentyp BYTE als UNSIGNED deklariert wird ?
Könnte natürlich auch sämtliche Bytes als Integer deklarieren, aber wenn das nicht unbedingt nötig ist, würd ich gerne drauf verzichten. Viel schlimmer ist die Tatsache, dass ich die Grösse des "Schades" noch gar nicht abschätzen kann, da in diesem grossen Projekt viele Variablen als Byte deklariert sind, die zwar nicht alle den vollen Werteumfang benutzen, aber es könnten.
Also, auf den Punkt gebracht:
Ist es von Erel so vorgesehen, dass ein BYTE SIGNED ist oder ist es ein Compilerfehler?
Ich vermute einfach mal , dass es so ist
Aber ich verstehe dann folgendes nicht, bzw. warum es funktioniert
Dim buffer() As Byte
buffer = send.GetBytes("ISO-8859-1")
astreams.send.........
Hier koennen ja AUCH Wertigkeiteb ÜBER 127 genutzt werden, obwohl der Buffer als Byte
deklariert ist. Gibts da Unterschiede ??
Gruss aus Kassel
Holger
Last edited: