如题,其中结构体格式如下:
type tx=packed record
  a:cardinal;
  b:cardinal;
  c:array of char;
  d:byte;
end;

解决方案 »

  1.   

    你不应该这样声明结构体
    type tx=packed record
      a:cardinal;
      b:cardinal;
      c:array of char;//不要用动态得,要指定元素个数,不然结构体的大小,不易直接得出,处理起来当然不方便了
      d:byte;
    end;
    如果结构体大小是固定的,那么操作起来就很方便了
      

  2.   

    type tx=packed record
      a:cardinal;
      b:cardinal;
      c:array of char;
      d:byte;
    end;其中c编以后会被作为一个指针来用,其中存放的是数组的地址,数组内容在另外分配的内存中,与record不在一块,sendbuf发送时只发送了record,c中存储的内容到了接收方程序中就无效了,会导致地址访问异常。
    用于通讯的数据包中应该用array[n..m]of char.
      

  3.   

    发送可以通过使用流或者copymemory来处理;但是接收到的数据(array of byte)如何才能存储到我的结构体里面?
      

  4.   

    先缓存到缓冲区,等缓存的数据足够了,再copymemory到你的结构体变量中去。
      

  5.   

    不用流就用。NET的远程处理是很好的办法,但如果你不是用。NET来做那只能用流了。用流时你要把每一个值写进去,如果是可变的值,还得有长度标识,不然接收那边是没办法知道的。