• 结构化指针和单字节指针的区别


    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;

  • 相关阅读:
    Qt QApplication 类简介--Qt 类简介专题(四)
    回调函数
    C++类型转换总结
    Debug Error
    C++回调函数(callback)的使用
    Nokia5230连接电脑无线上网
    photoshop cs6\cs5找不到扫描仪的解决办法(Twain_32.8BA补丁下载)
    UML类图几种关系的总结
    实现单点登录
    poj 1151Atlantis线段树求矩形面积并解题报告
  • 原文地址:https://www.cnblogs.com/GameDelphi/p/12746209.html
Copyright © 2020-2023  润新知