Hello
I'm trying to convert the following VB6 code to VB.NET, but can't seem
to find the right API declaration. Note that the Buffer is an output
field which the API call will fill a value in.
VB6 Code:
[VB6]
Type JAG_STRING_40
Data As String * 40
End Type
Public Declare Function JagRead Lib "jagxapi.dll" (ByVal DataPath As
String, ByVal BufferLen As Integer, Buffer As Any, ReturnLen As Integer)
As Integer
Private Function ReadVariable() as String
Dim Lit01Val As JAG_STRING_40
JagRead("/j1/var01", 40, Lit01Val, jagReturnLength)
ReadVariable = RTrim$(Lit01Val.Data)
end Sub
I tried this declaration, but the returned buffer always seems to be empty:
[VB.NET]
Private Const BUFFER_LEN As Integer = 40
<StructLayout(LayoutKind.Sequential)> Private Structure FixLenBuffer
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=BUFFER_LEN)>
Public Data As String
Public Sub New(ByVal vData As String)
Me.Data = LSet(vData, BUFFER_LEN)
End Sub
End Structure
Private Shared mBuffer As FixLenBuffer
Private Declare Ansi Function JagReadApi Lib "jagxapi.dll" Alias
"JagRead" (ByVal DataPath As String, ByVal BufferLen As Short, ByRef
Buffer As FixLenBuffer, ByRef ReturnLen As Short) As Short
Friend Shared Function JagRead(ByVal vVarName As String) As String
Dim retLen As Short
mBuffer = New FixLenBuffer("")
Dim ret As Short = JagReadApi("/j1/" + vVarName, BUFFER_LEN,
mBuffer, retLen)
Return Trim(Left(mBuffer.Data, retLen))
End Function
Any help would be greatly appreciated!
Urs