Article ID: 112673
Article Last Modified on 12/9/2003
APPLIES TO
- Microsoft Visual Basic 1.0 Standard Edition
- Microsoft Visual Basic 2.0 Standard Edition
- Microsoft Visual Basic 3.0 Professional Edition
- Microsoft Visual Basic 2.0 Professional Edition
- Microsoft Visual Basic 3.0 Professional Edition
This article was previously published under Q112673
SUMMARY
Visual Basic stores its integer variables in an 8-bit data field, as does C. Visual Basic uses signed integers only, so it reserves one of the bits as a sign bit. In C, you have the choice of an unsigned integer (the variable ranges from 0 to 65536) or a signed integer (the variable ranges from -32767 to +32767 as do Visual Basic integer variables).
MORE INFORMATION
Visual Basic stores its integer variables in an 8-bit data field, as does C. Visual Basic uses signed integers only, so it reserves one of the bits as a sign bit. In C, you have the choice of an unsigned integer (the variable ranges from 0 to 65536) or a signed integer (the variable ranges from -32767 to +32767 as do Visual Basic integer variables).
Step-by-Step Example
Follow a process similar to the following to pass a value greater than 32767 as an integer from Visual Basic to a dynamic link library (DLL) that is expecting an unsigned integer or to return an integer value that is outside the range of valid Visual Basic integers:
- Start a new project in Visual Basic. Form1 is created by default.
Add the following code to the general declarations section of Form1. Note that you must actually have a DLL that takes an unsigned integer as a parameter.
' MyLong is a function in a DLL that takes an unsigned integer as a ' parameter and returns the same value passed in. To run this sample you ' will have to create the MYLONG function. Enter the following Declare ' statement as one, single line: Declare Function MyLong Lib "MyLong.DLL" (ByVal iInt AS Integer) As Integer
- Add a command button (Comamnd1) to Form1.
Add the following code to the Command1_Click event:
Sub Command1_Click() Dim lValue As Long Dim i As Integer, w As Integer ' Initialize lvalue: lValue = 40000 If lValue > 32767 Then w = lValue - 65536 Else w = lValue ' Just pass it on End If ' Call a DLL that is expecting an unsigned integer. ' For this example, the MyLong function will return ' the same value passed in. i = MyLong(w) ' Convert returned value: If i < 0 Then lValue = 65536 + i Else lValue = i End If ' Display the results: Print Str(lValue) End Sub
- Run the program.
Additional query words: 3.00
Keywords: KB112673