• {$POINTERMATH ON} 方便指针操作的编译指令



    编译指令 PointerMath 默认 off; 打开后, 可以像数组一样地读写指针中的系列数据, 非常方便!
    //测试整数指针
    procedure TForm1.Button1Click(Sender: TObject);
    var
      p: PInteger;
      i: Integer;
    begin
    {$POINTERMATH ON}
      //写入
      p := GetMemory(SizeOf(Integer) * 4);
      p[0] := 11;
      p[1] := 22;
      p[2] := 33;
      p[3] := 44;
    
      //读取
      ShowMessageFmt('%d, %d, %d, %d', [p[0], p[1], p[2], p[3]]);
    {$POINTERMATH OFF}
    
      //之前有时会这么麻烦
      ShowMessageFmt('%d, %d, %d, %d', [p^, PInteger(Integer(p) + SizeOf(Integer) * 1)^,
        PInteger(Integer(p) + SizeOf(Integer) * 2)^,
        PInteger(Integer(p) + SizeOf(Integer) * 3)^]);
    
      FreeMemory(p);
    end;
    
    //测试结构体指针
    procedure TForm1.Button2Click(Sender: TObject);
    type
      TMyRec = record
        Name: string[12];
        Age: Word;
      end;
    var
      p: ^TMyRec;
    begin
    {$POINTERMATH ON}
      p := GetMemory(SizeOf(TMyRec) * 2);
    
      //写入
      p[0].Name := '张三';
      p[0].Age := 11;
      p[1].Name := '李四';
      p[1].Age := 22;
    
      //读取
      ShowMessageFmt('%s, %d', [p[0].Name, p[0].Age]);
      ShowMessageFmt('%s, %d', [p[1].Name, p[1].Age]);
    
      FreeMemory(p);
    {$POINTERMATH OFF}
    end;
    
  • 相关阅读:
    POJ 3417 Network
    指针动态开空间的板子
    fread()的板子
    luguo P1970 花匠
    Uva
    Uva
    Uva
    Uva
    Uva
    什么才算是真正的编程能力?
  • 原文地址:https://www.cnblogs.com/del/p/1618816.html
Copyright © 2020-2023  润新知