程序技术好文:记录类型指针

简介: 程序技术好文:记录类型指针

"

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

//代码效果参考: https://v.youku.com/v_show/id_XNjQwNjYwNzMzMg==.html

获取窗体所有按钮的名字和对应的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 //代码效果参考:https://v.youku.com/v_show/id_XNjQwMDE1ODkxMg==.html

(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 p1nil do

begin

p2:=p1;

ShowMessageFmt('按鈕名:%s,id值:%d',【p2.mybutt.Name,p2.id】);

p1:=p2.next;

end;

Dispose(currnode);

end;

end.


"
image.png
相关文章
|
2月前
|
C++
C++程序返回指针值的函数
C++程序返回指针值的函数
28 1
|
2月前
|
存储 C++
C++程序数组与指针:深入理解与实践
C++程序数组与指针:深入理解与实践
31 1
|
2月前
|
存储 C++
C++程序指针变量:深入理解与实践
C++程序指针变量:深入理解与实践
24 1
|
2月前
|
存储 C++
C++程序中的对象指针
C++程序中的对象指针
23 1
|
7天前
|
编译器 C++
函数指针和函数对象不是同一类型怎么替换
函数指针和函数对象不是同一类型,为何可替换用作同一函数的参数
|
3天前
|
Java 程序员 Linux
探索C语言宝库:从基础到进阶的干货知识(类型变量+条件循环+函数模块+指针+内存+文件)
探索C语言宝库:从基础到进阶的干货知识(类型变量+条件循环+函数模块+指针+内存+文件)
10 0
|
3天前
|
存储 缓存 算法
详解JVM内存优化技术:压缩指针
详解JVM内存优化技术:压缩指针
|
2月前
|
存储 安全 C语言
void指针类型详解
void指针类型详解
16 2
|
2月前
|
存储 C++
C++程序中的字符串与指针
C++程序中的字符串与指针
19 2
|
2月前
|
存储 C++
C++程序中的函数与指针
C++程序中的函数与指针
10 1