zoukankan      html  css  js  c++  java
  • {$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;
    
  • 相关阅读:
    0055. Jump Game (M)
    0957. Prison Cells After N Days (M)
    Java
    Java
    Java桌面应用程序打包
    JavaGUI练习
    Java贪吃蛇小游戏
    Java GUI编程
    Java异常处理机制
    抽象类与接口
  • 原文地址:https://www.cnblogs.com/del/p/1618816.html
Copyright © 2011-2022 走看看