哎,一看就知道是弄IC卡的.弄发卡器吧.
TParaBuf=record  
          ComNo:integer;                //串口号  
          Baud:integer;                  //波特率  (一般设为115200)  
          Sys_Sec:array  [1..3]  of  integer;      //系统扇区1,2,3  (一般设为0,1,2)  
          User_Sec:array  [1..3]  of  integer;      //用户扇区1,2,3  (一般设为3,4,5,可以自由设置)  
          AuthorNo:array  [1..6]  of  PChar;结构体对齐就是内存要对齐.它这里使用了默认的DELPHI字节对齐方式,你在定义结构体的时候也要.
按照上面的定义一个C#版本,然后packed = 4就可以了.

解决方案 »

  1.   

    我这样定义的,不知对不对
     [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]
            public struct TParaBuf
            {
                [MarshalAs(UnmanagedType.LPStr)]
                public int ComNo;
                [MarshalAs(UnmanagedType.LPStr)]
                public int Baud;
                [MarshalAs(UnmanagedType.LPStr)]
                public int Sys_Sec;
                [MarshalAs(UnmanagedType.LPStr)]
                public int User_Sec;
                [MarshalAs(UnmanagedType.LPStr)]
                public string AuthorNo;        }
      

  2.   

    我这样定义的,不知对不对
     [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 4)]
            public struct TParaBuf
            {
                [MarshalAs(UnmanagedType.LPStr)]
                public int ComNo;
                [MarshalAs(UnmanagedType.LPStr)]
                public int Baud;
                [MarshalAs(UnmanagedType.LPStr)]
                public int Sys_Sec;
                [MarshalAs(UnmanagedType.LPStr)]
                public int User_Sec;
                [MarshalAs(UnmanagedType.LPStr)]
                public string AuthorNo;        }