将SSS中的数据读入BUFFER中了!

解决方案 »

  1.   

    pdddd=^dddd
    DDDD=RECORD
          D:STRING[12];
          DD:INTEGER;
          END;var sss:pdddd;    getmem(sss,500);
        sss^.d:=...;
        sss^.dd=...;
       socket.sendbuf(sss,500)
       freemem(sss);
    不知对不对。可能size=500有错。
      

  2.   

    奇怪的问题........使用Tmemorystream不就行了吗?
      

  3.   

    结构这么定义有问题:
    DDDD=RECORD
          D:STRING[12];//不能这么定义
          DD:INTEGER;
          END;应该定义为:
    typeDDDD=RECORD
          D:array[0..11] of char;
          DD:INTEGER;
    END;
    另外注意对方是否有字节对齐的问题,当然对于你上面的结构,是不用考虑的。Var
      sss:dddd;
      strSend:String;
    Begin
      strSend:='d string'
      StrCopy(sss.d,Pchar(strSend));
      sss.dd:=222;
      clientsocket1.socket.sendbuf(sss,sizeof(dddd));
    //                             ^^^注意这里不是指针
    End;
    要是按楼上的朋友的写法应该写成:
    ....socket.sendbuf(sss^,500)