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;

  • 相关阅读:
    发现WPF在Windows 7 的一个BUG ,多点触摸开发的注意了
    广度优先搜索 与 深度优先算法
    log4net window UAC下无法记录解决
    简单网页制作
    JS常用属性
    JS for循环、if判断、white循环。
    mysql 查询
    HTML学习随笔
    JS小练习
    mysql增删改
  • 原文地址:https://www.cnblogs.com/GameDelphi/p/12746209.html
Copyright © 2011-2022 走看看