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

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

"

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

//代码效果参考: 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
相关文章
|
7月前
|
C++
C++程序返回指针值的函数
C++程序返回指针值的函数
54 1
|
7月前
|
存储 C++
C++程序数组与指针:深入理解与实践
C++程序数组与指针:深入理解与实践
76 1
|
7月前
|
存储 C++
C++程序指针变量:深入理解与实践
C++程序指针变量:深入理解与实践
54 1
|
7月前
|
存储 C++
C++程序中的对象指针
C++程序中的对象指针
53 1
|
2月前
|
C语言 C++
【C语言】指针篇-一篇搞定不同类型指针变量-必读指南(3/5)
【C语言】指针篇-一篇搞定不同类型指针变量-必读指南(3/5)
|
3月前
|
存储 Go
Go: struct 结构体类型和指针【学习笔记记录】
本文是Go语言中struct结构体类型和指针的学习笔记,包括结构体的定义、成员访问、使用匿名字段,以及指针变量的声明使用、指针数组定义使用和函数传参修改值的方法。
|
4月前
|
存储 安全 Go
深入理解 Go 语言中的指针类型
【8月更文挑战第31天】
48 0
|
6月前
|
编译器 C++
函数指针和函数对象不是同一类型怎么替换
函数指针和函数对象不是同一类型,为何可替换用作同一函数的参数
|
7月前
|
存储 安全 C语言
void指针类型详解
void指针类型详解
79 2
|
6月前
|
Java 程序员 Linux
探索C语言宝库:从基础到进阶的干货知识(类型变量+条件循环+函数模块+指针+内存+文件)
探索C语言宝库:从基础到进阶的干货知识(类型变量+条件循环+函数模块+指针+内存+文件)
51 0