zoukankan      html  css  js  c++  java
  • 结构化指针和单字节指针的区别

    type

      PTCsRc = ^TCsRc;
      TCsRc = record
        ID:Word;
        Count:Integer;
      end;

      TForm1 = class(TForm)
        Memo1: TMemo;
        Button1: TButton;
        procedure FormCreate(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
      private
        FP:PTCsRc;
        FB:PAnsiChar;
        FPDestroy:PAnsiChar;
      public
        { Public declarations }
      end;

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Memo1.Clear;
      GetMem(FB,SizeOf(TCsRc) * 3);
      FPDestroy := FB;
    end;


    procedure TForm1.FormDestroy(Sender: TObject);
    begin
      FreeMem(FPDestroy);
      FPDestroy := nil;
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    var
      I:Integer;
      nCs:TCsRc;
      nP:PAnsiChar;
    begin
      nP := FB;
      FP := @FB[0];//也可以强制转换:PTCsRc(FB)
      for I := 0 to 3 - 1 Do begin
        FillChar(nCs,SizeOf(TCsRc),0);
        With nCs Do begin
          ID := I;
          Count := SizeOf(TCsRc) + I;
        end;
        Move(nCs,FB^,SizeOf(TCsRc));
        Inc(FB ,SizeOf(TCsRc) );  //这里需要加上结构大小
        Memo1.Lines.Add(Format('%d',[nCs.ID]));
        Memo1.Lines.Add(Format('%d',[nCs.Count]));
        Memo1.Lines.Add('========');

      end;

      for I := 0 to 3 - 1 Do begin
        FillChar(nCs,SizeOf(TCsRc),0);
        Move(nP^,nCs,SizeOf(TCsRc));
        Memo1.Lines.Add(Format('%d',[nCs.ID]));
        Memo1.Lines.Add(Format('%d',[nCs.Count]));
        Memo1.Lines.Add('***********');

        Inc(nP,SizeOf(TCsRc));  //这里需要加上结构大小
      end;

      for I := 0 to 3 - 1 Do begin
        FillChar(nCs,SizeOf(TCsRc),0);
        Move(FP^,nCs,SizeOf(TCsRc));
        Memo1.Lines.Add(Format('%d',[nCs.ID]));
        Memo1.Lines.Add(Format('%d',[nCs.Count]));
        Memo1.Lines.Add('-----------');

        Inc(FP);   //结构指针这里直接增加
      end;
    end;

  • 相关阅读:
    微信小程序Rx 引入 调用合并的方法
    小程序 引入 es-canvas wx:for 单页面渲染多个for不同数据
    jquery操作数组对象
    Docker MySQL 8 主从配置
    CentOS 7 安装 LNMP
    lnmp1.6 配置负载均衡
    Nginx + PHP-FPM 参数优化、性能监视和问题排查
    「查缺补漏」巩固你的Nginx知识体系
    Android生成SHA1(证书指纹)
    android studio 如何把依赖导出成 jar
  • 原文地址:https://www.cnblogs.com/GameDelphi/p/12746209.html
Copyright © 2011-2022 走看看