예: 데이터 유형 변환을 위한 헬퍼 메소드를 사용한 ActiveX 클라이언트 애플리케이션
일반적으로, ActiveX(Visual Basic 및 VBScript) 및 Java™ 메소드 간 데이터 유형 변환은 ActiveX to EJB 브릿지에서 설명된 대로 자동으로 데이터 유형 변환이 발생합니다. 그러나 바이트 헬퍼 기능 및 통화 헬퍼 기능은 자동 변환이 불가능한 경우에 제공됩니다.
- 바이트 헬퍼 기능 Java Byte 데이터 유형이 부호가 있고(-127 ~ 128) Visual Basic Byte 데이터 유형이 부호가 없으면(0 ~ 255), 부호 없는 바이트를 Visual Basic 정수로 변환하기 때문에, Java 부호 있는 바이트와 유사합니다. 이 변환을 작성하려면, 다음 헬퍼 기능을 사용할 수 있습니다.
Private Function GetIntFromJavaByte(Byte jByte) as Integer GetIntFromJavaByte = (CInt(jByte) + 128) Mod 256 - 128 End Function
- 통화 헬퍼 기능 Visual Basic 6.0은 Java 메소드가 할 수 있는 것처럼 64비트 정수를 (Long 데이터 유형으로) 적절하게 처리할 수 없습니다. 그러므로, Visual Basic은 통화 유형을 사용하며 이는 본질적으로 64비트 데이터 유형입니다. 유일한 통화 유형(변형 유형 VT_CY) 사용 부작용은 소수점이 해당 유형에 삽입된다는 점입니다. Visual Basic에서 64비트 Long 값을 추출하고 조작하려면, 다음 예와 같은 코드를 사용합니다. 통화 데이터 유형 변환을 위한 이 기술에 대한 세부사항은 Microsoft Knowledge Base에서 "Q189862, HOWTO: Do 64-bit Arithmetic in VBA"를 참조하십시오.
' 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