StrMove 和 CopyMemory 都是所有都拷贝.不管源字符串是否结束.想找一个源字符串结束了就不用拷贝的函数.

解决方案 »

  1.   

    谢谢两位
    StrLCopy 有这样的问题:
    var  Dest : array [0..8] of char ;
      scoure : string;
    begin
      fillchar(Dest, sizeof(Dest),  0);
      scoure := '12345678900';
      StrLCopy(Dest, PChar( scoure ), SizeOf(Dest)-1 );
      //Dest 只拷贝了1~8
    end;
    怎么能将Dest 为1~9 
      

  2.   

    var  Dest : array [0..8] of char ; 
      scoure : string; 
    begin 
      fillchar(Dest, sizeof(Dest),  0); 
      scoure := '12345678900'; 
      //StrLCopy(Dest, PChar( scoure ), SizeOf(Dest)-1 ); 
      //Dest 只拷贝了1~8 
      Move(PAnsiChar(Source)^, Dest, Min(Length(Source), Length(Dest)));
    end; 
      

  3.   

    晕,现在的StrPLCopy竟然就是StrLCopy...
      

  4.   


    var  Dest : array [0..8] of char ; 
      scoure : string; 
    begin 
      fillchar(Dest, sizeof(Dest),  0); 
      scoure := '12345678900'; 
      //StrLCopy(Dest, PChar( scoure ), SizeOf(Dest)-1 ); 
      //Dest 只拷贝了1~8 
      Move(PAnsiChar(Source)^, Dest, Min(StrLen(PAnsiChar(Source)), Length(Dest)));
    end; 
      

  5.   


    var
      Dest: array [0..8] of char ;
      scoure: string;
    begin
      fillchar(Dest, sizeof(Dest), 0);
      scoure := '12345678900';
      Move(PAnsiChar(scoure)^, Dest[0], High(Dest));
    end;
      

  6.   

    谢谢僵哥!
    还有一个问题.如果在把Dest数组转为字符串是不是需要在后面加#0啊?该如何做?请指点.
      

  7.   

    SetString(scoure, PAnsiChar(@Dest[0]), Length(Dest));
      

  8.   

    或者
    scoure := StrPas(PAnsiChar(@Dest[0]));
      

  9.   

    SetString(scoure, PAnsiChar(@Dest[0]), Length(Dest)); 可以.
    scoure := StrPas(PAnsiChar(@Dest[0]));不行?