我想请教兄弟姐妹们:我用AllocMem分配内容后,如何用得到的Pointer类型的指针对已分配内存的每一个字节附值。(只能是逐字节附值,不能整体进行附值)
我用这样的方法:(Pointer+i)^:=2;但不行,好像报的错误是Pointer不能加偏移值.我不知道该怎么做了,望赐教!

解决方案 »

  1.   

    呵呵,这个很简单的有两种方法:
    (PChar(Pointer) + i)^ := 2;或者是Pointer(Integer(Pointer) + i)^ := 2也就是说,强制类型转化为PChar类型,可以实现字节偏移;强制类型转化为Integer也行
      

  2.   

    Pointer 是个无类型的指针类型
    并不能够根据一个类型为 Pointer 的指针变量判断出它所指向的对象的大小。
    var
      p: Pointer
    begin
      //...
      Inc(p); // Error
      Inc(PChar(p));    // OK, 地址值增大 SizeOf(Char) 个字节,也就是1个字节
      Inc(PByte(p));    // OK, 地址值增大 SizeOf(Char) 个字节,也就是1个字节
      Inc(PInteger(p)); // OK, 地址值增大 SizeOf(Integer) 个字节,也就是4个字节
      //以此类推
      //...
    end;
      

  3.   

    PInteger(Integer(PointerA) + i)^ := 2;
      

  4.   

    使用FillChar函数,如果你要全部清零,那么直接使用API:ZeroMemory