unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
TreeView1: TTreeView;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
var
ss:string;
ss1:^string;
begin
ss:='12345';
new(ss1);
ss1^:=ss;
TreeView1.Items[1].Data:=ss1;
end;procedure TForm1.Button1Click(Sender: TObject);
var
CurrenNode:TTreeNode;
Ipvalue:^string;
Ipvaluestr:string;
begin CurrenNode:=treeview1.Items[1];
new(Ipvalue);
try
Ipvalue:=CurrenNode.Data;
Ipvaluestr:=Ipvalue^;
finally
dispose(Ipvalue);
end;
showmessage(Ipvaluestr);
end;end.
现在问题是:
我单击一次 Button1 ,show 出 字符串 12345
我再次单击,就出现错误了,是地址路径错的那种如果,我写procedure TForm1.Button1Click(Sender: TObject);
var
CurrenNode:TTreeNode;
Ipvalue:^string;
Ipvaluestr:string;
begin CurrenNode:=treeview1.Items[1];
new(Ipvalue);
Ipvalue:=CurrenNode.Data;
Ipvaluestr:=Ipvalue^;
showmessage(Ipvaluestr);
end;
则没有错误,这是什么原因啊?谢谢!
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
TreeView1: TTreeView;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
var
ss:string;
ss1:^string;
begin
ss:='12345';
new(ss1);
ss1^:=ss;
TreeView1.Items[1].Data:=ss1;
end;procedure TForm1.Button1Click(Sender: TObject);
var
CurrenNode:TTreeNode;
Ipvalue:^string;
Ipvaluestr:string;
begin CurrenNode:=treeview1.Items[1];
new(Ipvalue);
try
Ipvalue:=CurrenNode.Data;
Ipvaluestr:=Ipvalue^;
finally
dispose(Ipvalue);
end;
showmessage(Ipvaluestr);
end;end.
现在问题是:
我单击一次 Button1 ,show 出 字符串 12345
我再次单击,就出现错误了,是地址路径错的那种如果,我写procedure TForm1.Button1Click(Sender: TObject);
var
CurrenNode:TTreeNode;
Ipvalue:^string;
Ipvaluestr:string;
begin CurrenNode:=treeview1.Items[1];
new(Ipvalue);
Ipvalue:=CurrenNode.Data;
Ipvaluestr:=Ipvalue^;
showmessage(Ipvaluestr);
end;
则没有错误,这是什么原因啊?谢谢!
解决方案 »
- vista 下开启Adodataset时速度非常慢,请教原因。
- 求《delphi组件参考大全》电子书!
- oooo多线程查询的问题ooooo
- 有人碰到过delphi的这种问题吗???
- 急!!!内部网络互通不需计费,内部主机上外部网络时需要计费的实现
- 请问如何将网卡的ip地址和dns设置为自动获取?
- MySQL的问题--ADOQuery.Delete、ADOQuery.Edit都出现问题,请大家帮忙,谢谢!
- 为什么客户端响应速度慢?
- 求教,程序报错原因?!!
- 我用Delphi做的DLL 为什么在VB下不能调用?
- 大家帮帮忙!如何让TWebBrowser.ExecWB保存网页时不出现提示框?谢谢
- 关于SQL数据库的问题呀
如果真要释放,
treeview重读前或程序关闭时
才对data逐个释放
data 是 treeview 节点的属性
和 Ipvalue 有什么关系啊?
谢谢!
你可以参考下面的代码:procedure TForm1.Button1Click(Sender: TObject);
var
CurrentNode: TTreeNode;
begin
CurrentNode:=treeview1.Items[1];
if Assigned(CurrentNode.Data) then
showmessage(PString(CurrentNode.Data)^);
end;
var
CurrenNode:TTreeNode;
Ipvalue:^string;
Ipvaluestr:string;
begin
CurrenNode:=treeview1.Items[1];
Ipvalue:=CurrenNode.Data;
Ipvaluestr:=Ipvalue^;
showmessage(Ipvaluestr);
end;