应该定义为指针类型把
type
PQuestInfo = ^TQuestInfo
type
PQuestInfo = ^TQuestInfo
解决方案 »
- 求助,类改名后无法通过编译
- 为什么我用chart运行时老是报错呢 EDBEngineerror
- quickrpt打印父子结构表时,如何每一页的开头都打印父数据?
- 怎样在双击标题栏时执行一段代码?
- 《Delphi5开发人员指南》源代码-Code-Ch14-SysInfo根本无法正确运行!怎么回事?
- 问:Delphi7安装后无制作安装程序的软件InstallShield,我在哪里可以安装它呢?急……
- 如何得到本机的动态IP地址?
- 请问我在form1中定义了一个函数,怎样在其它form中引用这个函数?
- 请救火,Delphi中如何生成一个Wizard,谢谢!
- 关于在sql中执行delphi函数的问题(分没有了,求助帖,明天转分)
- Treenode的问题!
- 请问,怎样计算两个时间相隔的天数
应该是
treeNode.Data:=Pointer(^QuestInfo)
想一想:Pointer类型只有4个字节,而你的TQuestInfo有多大呢?当然不可以Type cast啦!
偶以为上个问题没提出,不好意思了。
PQuestInfo = ^TQuestInfo
编译能通过,但是运行到atreenode.data := pndata时系统错误,提示invalid viarant type conversion
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;type PQuestInfo = ^TQuestInfo;
TQuestInfo = record
i: Integer;
j: Integer;
end; TForm1 = class(TForm)
TreeView1: TTreeView;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
Node: TTreeNode;
P: PQuestInfo;
begin
GetMem(P, SizeOf(TQuestInfo));
P.i := 20;
P.j := 30;
Node := TreeView1.Items.Add(nil, 's');
Node.Data := P;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
ShowMessage(IntToStr(PQuestInfo(TreeView1.Items[0].Data).i));
end;end.