Discussion:
interpretieren
(zu alt für eine Antwort)
Kuno Schmidt
2011-01-19 02:31:27 UTC
Permalink
Hallo,

was macht bitte folgender Code im alten VB genau:

CInt (test1) And &HFF

bzw

(CInt (test2) And &HFF00/ &H100


Danke
Wolfgang Badura
2011-01-19 08:49:52 UTC
Permalink
Hallo Kuno!
Post by Kuno Schmidt
Hallo,
CInt (test1) And &HFF
löscht das linke Byte nach der Konvertierung von CInt (test1) in ein
Integer.
Post by Kuno Schmidt
bzw
(CInt (test2) And &HFF00/ &H100
&HFF00/&H100 ergibt -1
daher wird das konvertierte Ergebnis von CInt (test2) nicht verändert.

Wenn Du aber meinst
(CInt (test2) And &HFF00
wird das rechte Byte nach der Konvertierung von CInt (test1) in ein Integer
gelöscht.
oder
(CInt (test2) And &H100
wird das Bit 2 hoch 16 nach der Konvertierung von CInt (test1) geprüft. (das
rechteste Bit im linken Byte)

Wolfgang
Thorsten Albers
2011-01-19 13:00:28 UTC
Permalink
Post by Kuno Schmidt
CInt (test1) And &HFF
'Liest' das niederwertige Byte des in einen 2-Byte-Wert konvertierten
Wertes von 'test1' aus (der 2-Byte-Wert wird auf den Wert des nw. Bytes
beschränkt ('And &HFF')).
Post by Kuno Schmidt
(CInt (test2) And &HFF00/ &H100
'Liest' das höherwertige Byte des in einen 2-Byte-Wert konvertierten Wertes
von 'test12' aus
(der 2-Byte-Wert wird auf den Wert des hw. Bytes beschränkt ('And &HFF00')
und dann um ein Byte nach 'unten' verschoben ('/ &h100), so daß er an der
Stelle des nw. Bytes steht und somit als Byte-Wert ausgelesen werden kann).
Allerdings sollte da besser '\ &H100' stehen. Außerdem kann es je nach
Datentyp von 'test1' und 'test2' zu einem Überlauf-Fehler kommen.
--
Thorsten Albers

gudea (a) gmx.de
Wolfgang Badura
2011-01-19 13:34:59 UTC
Permalink
Hallo Thorsten!
Post by Thorsten Albers
Post by Kuno Schmidt
(CInt (test2) And &HFF00/ &H100
'Liest' das höherwertige Byte des in einen 2-Byte-Wert konvertierten Wertes
von 'test12' aus
(der 2-Byte-Wert wird auf den Wert des hw. Bytes beschränkt ('And &HFF00')
und dann um ein Byte nach 'unten' verschoben ('/ &h100), so daß er an der
Stelle des nw. Bytes steht und somit als Byte-Wert ausgelesen werden kann).
Allerdings sollte da besser '\ &H100' stehen. Außerdem kann es je nach
Datentyp von 'test1' und 'test2' zu einem Überlauf-Fehler kommen.
Hmmm....
Ist da ein Unterschied zu VBA?
Da ergibt ? CInt (&HF) And &HFF00/ &H100
15
(&HF) bleibt also unverändert.

Wolfgang
Thorsten Albers
2011-01-19 17:31:17 UTC
Permalink
Post by Wolfgang Badura
Hmmm....
Ist da ein Unterschied zu VBA?
Da ergibt ? CInt (&HF) And &HFF00/ &H100
15
(&HF) bleibt also unverändert.
Nee, das ist unter VB auch so - das liegt am Operatoren-Vorrang, d.h. '\'
bzw. '/' geht vor 'And'. Wenn man sich aber die von Kuno zitierte Zeile
anschaut, kann man davon ausgehen, daß sie nicht korrekt wiedergegeben ist:
(CInt (test2) And &HFF00/ &H100
D.h. da fehlt eine Klammer, schwer vermtulich hinter '&HFF00'...
--
Thorsten Albers

gudea (a) gmx.de
Wolfgang Badura
2011-01-19 21:18:04 UTC
Permalink
Hallo Thorsten!
Post by Thorsten Albers
Post by Wolfgang Badura
Hmmm....
Ist da ein Unterschied zu VBA?
Da ergibt ? CInt (&HF) And &HFF00/ &H100
15
(&HF) bleibt also unverändert.
Nee, das ist unter VB auch so - das liegt am Operatoren-Vorrang, d.h. '\'
bzw. '/' geht vor 'And'. Wenn man sich aber die von Kuno zitierte Zeile
(CInt (test2) And &HFF00/ &H100
D.h. da fehlt eine Klammer, schwer vermtulich hinter '&HFF00'...
Das sehe ich auch so.

Dann ergibt nämlich
? (CInt (&H1FF) And &HFF00)\&H100
1
womit ich mich schon eher anfreunden kann.

Wolfgang

Lesen Sie weiter auf narkive:
Loading...