本帖最后由 l0v3_y1n9 于 2012-02-07 21:52:58 编辑

解决方案 »

  1.   


    move遇#0不会结束 但我并不知道数组内的WideChar字符长度是多少 
      

  2.   

    不知道长度就全move了,现在都在为32位系统如何使用8g内存发愁,而你却为几个字节发愁。去看下SysUtils单元,Delphi为了实现管理PChar类型长度,在PChar地址的前面申请了一个字节,表明长度。
    function StrBufSize(const Str: PChar): Cardinal;
    var
      P: PChar;
    begin
      P := Str;
      Dec(P, SizeOf(Cardinal));
      Result := Cardinal(Pointer(P)^) - SizeOf(Cardinal);
    end;function StrAlloc(Size: Cardinal): PChar;
    begin
      Inc(Size, SizeOf(Cardinal));
      GetMem(Result, Size);
      Cardinal(Pointer(Result)^) := Size;
      Inc(Result, SizeOf(Cardinal));
    end;
      

  3.   

    recvLen就是收到的长度了,直接用move吧
      

  4.   


    我是要分离数组里面的WideChar字符 并不是为了读全部数组 而是分离数组当中的N个WideChar字符.
    用StrCopy因为#0导致截断
      

  5.   

    不知是否是我表达有问题 
    比如数组内是AnsiChar字符:
    A B C #0 T E S T #0
    用StrCopy就可以复制出ABC 然后再偏移+1 又可以复制出TEST 如此循环直到结束但StrCopy不适用于WideChar字符 因为双字节 里面包含#0 我想找能够复制WideChar并且功能类似StrCopy的函数或者方法