Struct Send with socket from c# to delphi

I want to send the struct to another Program by using TcpClient. I found a
method that converts struct to byte but it does not works correctly. What
am i missing?


[StructLayout(LayoutKind.Sequential)]
public struct student
  {
    [MarshalAs(UnmanagedType.ByValArray,SizeConst=33)]
   public char[] sName;
 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 33)]
 public char[] sLastName;
 }
LVL 9
tolgaongAsked:
Who is Participating?
 
tolgaongConnect With a Mentor Author Commented:
This code converts struct to  byte array is below with the title.

I found my mistake. I filled with space chars. Therefore it differs from the correct result. I had to fill unused array elements with 0\'0'.

student tolga = new student();
char[] sName = new char[33];
"Tolga".ToCharArray().CopyTo(sName, 0);
tolga.sName = sName;
char[] sLastName = new char[33];
"Ongunsu".ToCharArray().CopyTo(sLastName, 0);
tolga.sLastName = sLastName;

STRUCT TO BYTE
-------------------------------------------------------------
private byte[] StructureToByteArray(object obj)
        {
            int len = Marshal.SizeOf(obj);
            byte[] arr = new byte[len];
            IntPtr ptr = Marshal.AllocHGlobal(len);
            Marshal.StructureToPtr(obj, ptr, true);
            Marshal.Copy(ptr, arr, 0, len);
            Marshal.FreeHGlobal(ptr);
            return arr;
        }
0
 
colonel720Commented:
How are you converting it to binary? are you using Binary Serialization, or something else?
0
 
colonel720Commented:
Ok, glad you figured it out.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.