Hex-Stress

07/02/2011 - 09:03 von Hermie | Report spam
Hallo an alle!

Ich bekomme bei einer Funktion 66617 raus, obwohl ich eigentlich 1081
herausbekommen müsste.

Ich denke mal, hier handelt es ich um einen Fehler bei meiner
Hext-ZuLong-Umwandlung.

Mein Hex-Wert ist "00010439".

Daraus wird wie gesagt 66617. Ich müsste aber eigentlich 1081
herausbekommen.
Wenn ich da jetzt 2x den Integer-Grenzwert abziehe, dann komme ich schon
sehr nah.

Dim l&
l = 66617 - 32767
l = l - 32767

"l" ist jetzt 1083. Möglicherweise muss ich auch 32766 nehmen, aber das
wàre jetzt zuviel des Schlagens in die Dunkelheit, finde ich, zumal ich
wirklich überhaupt keine Ahnung habe, was ich hier tue.

Es ging eigentlich um Folgendes: Ich möchte anhand eines
KeyboardLayout-Namens den LCID herausfinden:

GetKeyboardLayoutName sKBName

Dim lLCID&
lLCID = HexToLong(sKBName)

Public Function HexToLong(ByVal uHex As String) As Long

If Left(uCase(uHex), 2) = "&H" Then
uHex = Right(uHex, Len(uHex) - 2)
End If

HexToLong = Val("&H" & uHex & "&")

End Function

Weiß jemand, was ich hier falsche mache?

Danke im Voraus,
Hermie
 

Lesen sie die antworten

#1 Hermie
07/02/2011 - 09:07 | Warnen spam
Entschuldigung, hat sich erledigt. Ich bekomme den LCID auch sofort über
LoWord raus.

Am 07.02.2011 09:03, schrieb Hermie:
Hallo an alle!

Ich bekomme bei einer Funktion 66617 raus, obwohl ich eigentlich 1081
herausbekommen müsste.

Ich denke mal, hier handelt es ich um einen Fehler bei meiner
Hext-ZuLong-Umwandlung.

Mein Hex-Wert ist "00010439".

Daraus wird wie gesagt 66617. Ich müsste aber eigentlich 1081
herausbekommen.
Wenn ich da jetzt 2x den Integer-Grenzwert abziehe, dann komme ich schon
sehr nah.

Dim l&
l = 66617 - 32767
l = l - 32767

"l" ist jetzt 1083. Möglicherweise muss ich auch 32766 nehmen, aber das
wàre jetzt zuviel des Schlagens in die Dunkelheit, finde ich, zumal ich
wirklich überhaupt keine Ahnung habe, was ich hier tue.

Es ging eigentlich um Folgendes: Ich möchte anhand eines
KeyboardLayout-Namens den LCID herausfinden:

GetKeyboardLayoutName sKBName

Dim lLCID&
lLCID = HexToLong(sKBName)

Public Function HexToLong(ByVal uHex As String) As Long

If Left(uCase(uHex), 2) = "&H" Then
uHex = Right(uHex, Len(uHex) - 2)
End If

HexToLong = Val("&H" & uHex & "&")

End Function

Weiß jemand, was ich hier falsche mache?

Danke im Voraus,
Hermie

Ähnliche fragen