type
  DeliverStr = packed record
    SequenceNumber1: LongInt;
    SequenceNumber2: LongInt;
    SequenceNumber3: LongInt;
    UserNumber: packed array[0..21] of Char;
    SpNumber: packed array[0..21] of Char;
    Tp_Pid: Char;
    Tp_Udhi: Char;
    MessageCoding: Char;
    MessageLength: Integer;
    MessageContent: packed array[0..159] of Char;
end;
这样的一个结构:
1、UserNumber应该是第13位开始?
2、SPNumber应在36位。。
2、为什么我接收到的数据包解包后UserNumber的信息在第60位呢?而且所有的信息向后移位了。
请帮忙解释一下好吗?谢谢!急

解决方案 »

  1.   

    我调用的C的DLL整个数据处理过程都封装了。
      

  2.   

    DeliverStr = packed record
    定义数据类型的时候已经用过packed,在下面定义成员的时候还有必要再用packed定义吗?
    象下面的packed array[0..21] of Char;
      

  3.   

    整个结构是其他地方提供的。但我在去掉packed后也不行。
      

  4.   

    是c的程序不对,c的dll中相应的结构应该用#pragma pack(1)
      

  5.   

    我在DELHPI中数据结构的长度为什么会不一样呢/