zoukankan      html  css  js  c++  java
  • 记录类型指针

    以下例子利用记录类型指针实现:

    获取窗体所有按钮的名字和对应的id值。

    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    type
      pmyrec=^Tmyrec;//記錄類型指針要定義在對應的記錄類型之前。
      Tmyrec=record
        id:Integer;
        mybutt:TButton;
        pior:pmyrec;
        next:pmyrec;
      end;
      //pmyrec=^Tmyrec;//記錄類型指針定義在對應的記錄類型之後會報錯:Identifier redeclared: 'pmyrec'
    
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        Button4: TButton;
        procedure Button1Click(Sender: TObject);
      private
        firstnode:pmyrec;//記錄類型指針pmyrec定義在前面這裡才能引用(故將其定義在type之後是有原因滴~)。
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
      currnode,trannode,p1,p2:pmyrec;
      i,j:Integer;
    
    begin
      trannode:=nil;
      j:=0;
      for i:=0 to Self.ComponentCount-1 do
      begin
        if (Self.Components[i]is TButton) then
        begin
          inc(j);
          currnode:=new(pmyrec);
          currnode^.id:=j;//對於記錄類型指針,這裡有無尖角符都可以。
          currnode.mybutt:=Self.components[i]as TButton;
          currnode.pior:=nil;//此句在當次的循環就用到了,將下面的currnode.pior初始化為nil。
          currnode.next:=nil;//此句在下次的循環才用到,將trannode.next初始化為nil。
          if trannode=nil then
            firstnode:=currnode
          else
            trannode.next:=currnode;//‘上一個地址’的下一個指向地址是‘當前地址’!
          currnode.pior:=trannode;//‘當前地址’的前一個指向地址是‘上一個地址’!
          trannode:=currnode;//把‘當前地址’賦給‘上一個地址’變量,留待下一次循環賦值。
        end;
      end;
      p1:=firstnode;
      while p1<>nil do
      begin
        p2:=p1;
        ShowMessageFmt('按鈕名:%s,id值:%d',[p2.mybutt.Name,p2.id]);
        p1:=p2.next;
      end;
      Dispose(currnode); 
    end;
    
    end.

     

  • 相关阅读:
    个人项目作业
    软件工程个人博客作业
    软件工程热身作业
    OO第四单元作业总结
    OO第三单元作业总结
    OO第二单元作业总结
    酸甜苦辣皆阅历,悲欢离合尽人生——软件工程个人总结
    Centos7里yum出问题可以试试
    idea 报错 Two modules in a project cannot share the same content root
    关于本地git的补充
  • 原文地址:https://www.cnblogs.com/168-h/p/14805045.html
Copyright © 2011-2022 走看看