TNodeMyInfo=record
bRootNode:Boolean;
bVisitored:Boolean;
Info:HKey;
Index:Integer;
end;
PNodeInfo=^TNodeMyInfo;procedure TForm1.FormCreate(Sender:TObject);
P:PNodeInfo;
tempNode:TTreeNode;
begin
New(P);
P.bRootNode :=bRoot;
P.Info :=Info;
P.Index :=Index;
P.bVisitored :=False;
Node.Data:=P;
请问为什么要定义一个指针类型PNodeInfo?而如果直接用TNodeMyInfo这个记录类型放到程序中也可以。在什么情况下用指针类型呢?
另外,HKEY这个是什么类型?
bRootNode:Boolean;
bVisitored:Boolean;
Info:HKey;
Index:Integer;
end;
PNodeInfo=^TNodeMyInfo;procedure TForm1.FormCreate(Sender:TObject);
P:PNodeInfo;
tempNode:TTreeNode;
begin
New(P);
P.bRootNode :=bRoot;
P.Info :=Info;
P.Index :=Index;
P.bVisitored :=False;
Node.Data:=P;
请问为什么要定义一个指针类型PNodeInfo?而如果直接用TNodeMyInfo这个记录类型放到程序中也可以。在什么情况下用指针类型呢?
另外,HKEY这个是什么类型?
HKey是自定义的类型吧。
但是如果是局部变量,就需要使用指针,并且使用new或者Getmem为指针动态分配内存。因为局部变量在函数或过程退出后就自动消失了,动态分配的内存是在程序堆上分配的,相当于全局变量,只不过用完后要释放内存。
只是出现提示:[Warning]Unit1.pas(161):Unsafe type 'Data:Pointer'
为什么会出现这个提示?我用了p^.xxx还是会出现.
并且我看HKEY的定义,它是在WINDOWS单元中定义的,
HKEY = type LongWord;
type Longword这种形式是什么意思?它是32位无符号整数吗?这个type起什么作用?
2、你使用的可能是Delphi6.0以上版本,对指针类型转换提出移植警告:Unsafe type 'Data:Pointer',因为p是PNodeInfo指针类型,而Node.Data是无类型指针类型Pointer.
3、HKEY = type LongWord 同 HKEY = LongWord在使用上应该没有什么区别,不过是表现方式不同,如c++的
#define HKEY LongWord 和
typedef LongWord HKEY 一样,前者定义的是宏,后者是定义一个新类型。但在使用上完全感觉不出来。