码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-04-21 18:04:02      阅读:54      评论:0      收藏:0      [点我收藏+]

标签:col   clear   alt   strong   转换   record   private   --   des   

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;

技术图片

 

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

标签:col   clear   alt   strong   转换   record   private   --   des   

原文地址:https://www.cnblogs.com/GameDelphi/p/12746209.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!