Übersetzung einer Struktur nach VB.NET

23/06/2010 - 11:06 von Holger Vorberg | Report spam
Hallo Leute,

in einer Schnittstellenbeschreibung für eine externe .DLL habe ich
folgende definition (C/C++ ??) gefunden:

typedef struct
{
BYTE CardNumber[20];
DWORD Expiration;
BYTE Amount[13];
BYTE SystemNumber[8];
BYTE AuthorizationCode[9];
BYTE TranProcFlowFlags;
BYTE VariableSymbol[11];
BYTE SpecificSymbol[11];
BYTE SequenceNumber[10];
} FINANCIALREQ;

Wie müsste denn das VB.NET Äquivalent dazu aussehen?

Also aus BYTE TranProcFlowFlags würde ich jetzt ein
DIM TranProcFlowFlags as Byte machen.

Aber was wàre mit BYTE Amount[13]?

Gruß
Holger Vorberg
 

Lesen sie die antworten

#1 Peter Götz
23/06/2010 - 12:16 | Warnen spam
Hallo Holger,

in einer Schnittstellenbeschreibung für eine externe .DLL habe ich
folgende definition (C/C++ ??) gefunden:

typedef struct
{
BYTE CardNumber[20];
DWORD Expiration;
BYTE Amount[13];
BYTE SystemNumber[8];
BYTE AuthorizationCode[9];
BYTE TranProcFlowFlags;
BYTE VariableSymbol[11];
BYTE SpecificSymbol[11];
BYTE SequenceNumber[10];
} FINANCIALREQ;

Wie müsste denn das VB.NET Äquivalent dazu aussehen?



Erstelle Dir eine Klasse nach folgendem Muster:

Public Class FinancialReq
Private mBytes(86) As Byte

' nachfolgende nur zur Orientierung
' Private mCardNumber(20) As Byte
' Private mExpiration As Integer
' Private mAmount(13) As Byte
' Private mSystemNumber(8) As Byte
' Private mAuthorizationCode(9) As Byte
' Private mTranProcFlowFalgs As Byte
' Private mVariableSymbol(11) As Byte
' Private SpecificSymbol(11) As Byte
' Private mSequenceNumber(10) As Byte

Public Property CardNumber() As Byte()
Get
Dim Ret(20) As Byte
Array.Copy(mBytes, 0, Ret, 0, 20)
Return Ret
End Get
Set(ByVal value As Byte())
If value.Length > 20 Then
Throw New ArgumentOutOfRangeException
Else
Array.Copy(value, 0, mBytes, 0, value.Length)
End If
End Set
End Property

Public Property Expiration() As Integer
Get
Dim B(3) As Byte
Array.Copy(mBytes, 21, B, 0, 4)
Return BitConverter.ToInt32(B, 0)
End Get
Set(ByVal value As Integer)
Dim B() As Byte = BitConverter.GetBytes(value)
Array.Copy(B, 0, mBytes, 21, 4)
End Set
End Property

' ...
' hier weitere Properties
' ... Amount
' ... SystemNumber
' ... usw.
'

Public ReadOnly Property Bytes() As Byte()
Get
Return mBytes
End Get
End Property
End Class

Die "übrigen Properties" erstellst Du sinngemàss durch
Kopieren von bzw. in das Array() mBytes.
Über die Property Bytes() erhàltst Du dann ein
ByteArray mit den gewünschten Werten, welches Du
an Deine DLL übergeben kannst.

Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen