我在用这函数如下:
uses  ..., winsock;procedure aaa();
var
  len: integer;
  Buffer: String; //或者是Pchar也试过
begin
  len := recv(socket, Buffer, 1024, 0);
  ........当接收几个字符时是正常的,但当只接收一个字符时,Buffer就是一个无法存取的值了。//出错。

解决方案 »

  1.   

    不是吧,如果是用STRING的话要这么来做,不然的话是要出错的:
    len := recv(socket,Buffer[1],1024,0);
      

  2.   

    leaber
    不行啊,我调试了一晚,还不知道错在哪,请下载下去帮忙调试一下,成功后请发回到/inetmon/tzs/ApiSockConnect.rar回邮:[email protected]
      

  3.   

    procedure aaa();
    var
      len: integer;
      Buffer: String; //或者是Pchar也试过
      bufsize: Integer;
    begin
      bufsize:=1024;
      SetLength(buffer,bufsize);//一定要为STRING分配空间。
      len := recv(socket, pchar(Buffer)^, 1024, 0);
                          ~~~~~~~~~~~~~注意这儿,这样写才对。
      SetLength(buffer,len);
      ........