Reading a binary file

G

Guest

Hi,

My VS 2005 VB app reads a binary file that was created by a VS 2005 VC++
WinCE app. The VC++ app writes the following structure to the file.

typedef struct {
short ID;
TCHAR Num[10];
} PARTS_STRUCT;

In my VB code I read the file with this code...

<StructLayout(LayoutKind.Sequential, Pack:=1)> _
Public Structure Parts_Struct
Public ID As Short
<MarshalAs(UnmanagedType.TBStr, SizeConst:=10)> _
Public Num As String
End Structure

Dim Parts As New Parts_Struct
Dim fs As New FileStream(FName, FileMode.Open, FileAccess.Read)
Dim br As New BinaryReader(fs)
Parts.ID = br.ReadInt16()
Parts.Num = br.ReadChars(20)

When I run the code, the ID field is Ok, but I only get the 1st letter that
was saved in the "Num" field.

RML
 
H

Herfried K. Wagner [MVP]

RML said:
My VS 2005 VB app reads a binary file that was created by a VS 2005 VC++
WinCE app. The VC++ app writes the following structure to the file.

typedef struct {
short ID;
TCHAR Num[10];
} PARTS_STRUCT;

In my VB code I read the file with this code...

<StructLayout(LayoutKind.Sequential, Pack:=1)> _
Public Structure Parts_Struct
Public ID As Short
<MarshalAs(UnmanagedType.TBStr, SizeConst:=10)> _
Public Num As String

Try changing 'TBStr' to 'UnmanagedType.ByValTStr'.
 
G

Guest

Thanks. I did try that and still get the same results.


Herfried K. Wagner said:
RML said:
My VS 2005 VB app reads a binary file that was created by a VS 2005 VC++
WinCE app. The VC++ app writes the following structure to the file.

typedef struct {
short ID;
TCHAR Num[10];
} PARTS_STRUCT;

In my VB code I read the file with this code...

<StructLayout(LayoutKind.Sequential, Pack:=1)> _
Public Structure Parts_Struct
Public ID As Short
<MarshalAs(UnmanagedType.TBStr, SizeConst:=10)> _
Public Num As String

Try changing 'TBStr' to 'UnmanagedType.ByValTStr'.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top