Beispiel: ActiveX-Clientanwendung mit Helper-Methoden für die Konvertierung von Datentypen
Im Allgemeinen erfolgt die Datentypkonvertierung zwischen ActiveX (Visual Basic und VBScript) und Java™ -Methoden automatisch, wie im Abschnitt ActiveX beschrieben, und konvertiert Datentypen. Die Helper-Funktionen "Byte" und "Currency" sind für Fälle vorgesehen, in denen eine automatische Konvertierung nicht möglich ist:
- Helper-Funktion "Byte"Da der Java-Datentyp "Byte" signiert (-127 bis 128) und der Visual-Basic-Datentyp "Byte" nicht signiert (0 bis 255) ist, müssen Sie den nicht signierten Datentyp "Byte" in Visual-Basic-Integer konvertieren, die wie der signierte Java-Datentyp "Byte" erscheinen. Sie können diese Konvertierung mit der folgenden Helper-Funktion durchführen:
Private Function GetIntFromJavaByte(Byte jByte) as Integer GetIntFromJavaByte = (CInt(jByte) + 128) Mod 256 - 128 End Function - Helper-Funktion für "Currency"Visual Basic 6.0 kann 64-Bit-Ganzzahlen wie Java-Methoden (als Datentyp "Long") nicht ordnungsgemäß verarbeiten. Daher verwendet Visual Basic den Typ "Currency", der im Wesentlichen ein 64-Bit-Datentyp ist. Der einzige Nebeneffekt bei Verwendung des Typs "Currency" (Variant-Typ VT_CY) besteht darin, dass ein Dezimalpunkt in den Typ eingefügt wird. Wenn Sie den 64-Bit-Wert von "Long" extrahieren und in Visual Basic bearbeiten möchten, verwenden Sie Code wie im folgenden Beispiel. Weitere Informationen zu diesem Verfahren zur Konvertierung von Währungstypen finden Sie in
Q189862, HOWTO: Do 64-bit Arithmetik in VBA
in der Microsoft Knowledge Base.' Currency Helper Types Private Type MungeCurr Value As Currency End Type Private Type Munge2Long LoValue As Long HiValue As Long End Type ' Currency Helper Functions Private Function CurrToText(ByVal Value As Currency) As String Dim Temp As String, L As Long Temp = Format$(Value, "#.0000") L = Len(Temp) Temp = Left$(Temp, L - 5) & Right$(Temp, 4) Do While Len(Temp) > 1 And Left$(Temp, 1) = "0" Temp = Mid$(Temp, 2) Loop Do While Len(Temp) > 2 And Left$(Temp, 2) = "-0" Temp = "-" & Mid$(Temp, 3) Loop CurrToText = Temp End Function Private Function TextToCurr(ByVal Value As String) As Currency Dim L As Long, Negative As Boolean Value = Trim$(Value) If Left$(Value, 1) = "-" Then Negative = True Value = Mid$(Value, 2) End If L = Len(Value) If L < 4 Then TextToCurr = CCur(IIf(Negative, "-0.", "0.") & _ Right$("0000" & Value, 4)) Else TextToCurr = CCur(IIf(Negative, "-", "") & _ Left$(Value, L - 4) & "." & Right$(Value, 4)) End If End Function ' Java Long as Currency Usage Example Dim LC As MungeCurr Dim L2 As Munge2Long ' Assign a Currency Value (really a Java Long) ' to the MungeCurr type variable LC.Value = cyTestIn ' Coerce the value to the Munge2Long type variable LSet L2 = LC ' Perform some operation on the value, now that we ' have it available in two 32-bit chunks L2.LoValue = L2.LoValue + 1 ' Coerce the Munge value back into a currency value LSet LC = L2 cyTestIn = LC.Value