procedure ....
var
  pData,pMem: pointer;
  i: integer;begin
  pData := pMem + 54;//为什么非得加54???
  for i:=0 to size-54-1 do 
  begin
    pData^ := char(not Integer(pData^));  //这句可以达到取反的操作吗???
    pData := pData + 1;
  end;
end;

解决方案 »

  1.   

    就是两个指针:pdata,pmem,用pmem给pdata赋值(pData := pMem + 54;),而用pData := pMem;则会报错,非得要加54,为什么???
      

  2.   

    54是一个偏移量,PMEM + 54同样是个地址!
      

  3.   

    procedure ....
    var
      pData,pMem: pointer;
      i: integer;
    begin
    //你这里应该给PMem分配内存,然后给PMem指向的地址赋初始值,这些你都没有做。
      pData := pMem + 54;
      for i:=0 to size-54-1 do //这里的Size是什么?
      begin
        pData^ := char(not Integer(pData^));  //这句可以达到取反的操作吗???可以的
        pData := pData + 1;
      end;
    //这里应该给PData释放内存。
    end;