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;
    
  • 相关阅读:
    java接口请求超时处理方法
    Spring Cloud GateWay 服务网关
    Mysql中on条件和where条件的使用总结
    Elasticsearch之javaAqi
    Elasticsearch—CRUD
    ElasticSearch的版本控制和Mapping创建
    cmd定时任务计划
    CSS简介及使用
    html简介及应用
    Python基础(十五)-IO模型
  • 原文地址:https://www.cnblogs.com/del/p/1618816.html
Copyright © 2011-2022 走看看