var
  pBuf: PChar;
  AData: Pointer;
  ACount: integer;
begin
  CopyMemory(@pBuf[0], AData, ACount);
end;
这样一个程序,如果ACount=5,AData后内存中为 #11,#12,#13,#00,#15 这样执行到#00后面的内容就拷贝不进去了,怎么才能拷贝全?

解决方案 »

  1.   

    并不是拷贝不全,而是PChar认为到了#0就结束了
      

  2.   

    Delphi所提供的相关PChar字符串的操作都是判断#0来决定字符串的结尾的,所以问题可能不在复制而是在于pBuf的赋值
      

  3.   

    如果你的pBuf长度足够,#15是肯定会被拷贝进去的,但你以字符串(PChar)的形式来显示拷贝内容,就看不到#15,因为字符串遇到#00就结束了。
      

  4.   

    数据是拷进去的
    你可以直接读取pBuf[4],肯定等于#15
      

  5.   

    另外,不知道你的代码是否完整,如果是,那你的pBuf应该先申请足够的内存