type
PPersonData = ^TPersonData;
TPersonData = record
PersonName: string;
PersonID: string;
end;procedure TForm1.FormCreate(Sender: TObject);
var
PersonData1: PPersonData;
PersonNode: TTreeNode;
begin
Query1.First;
while not Query1.Eof do
begin
New(PersonData1);
PersonData1^.PersonName := Query1.fieldbyName('PersonName').AsString;
PersonData1^.PersonID := Query1.fieldByName('PersonID').AsString; PersonNode := TreeView1.Items.Add(nil, PersonData1^.PersonName);
PersonNode.Data := pointer(PersonData1);
Query1.Next;
end;
end;请问以上程序中PersonNode.Data和PersonData1的内容在程序结束时是否需要释放,
如果要,应在哪里释放?怎么释放?
PPersonData = ^TPersonData;
TPersonData = record
PersonName: string;
PersonID: string;
end;procedure TForm1.FormCreate(Sender: TObject);
var
PersonData1: PPersonData;
PersonNode: TTreeNode;
begin
Query1.First;
while not Query1.Eof do
begin
New(PersonData1);
PersonData1^.PersonName := Query1.fieldbyName('PersonName').AsString;
PersonData1^.PersonID := Query1.fieldByName('PersonID').AsString; PersonNode := TreeView1.Items.Add(nil, PersonData1^.PersonName);
PersonNode.Data := pointer(PersonData1);
Query1.Next;
end;
end;请问以上程序中PersonNode.Data和PersonData1的内容在程序结束时是否需要释放,
如果要,应在哪里释放?怎么释放?
解决方案 »
- 如何打勾/取消打勾外部程序中的ListView的Item的checkbox?
- delphi7中label控件中的最后一个汉字为什么在运行时总显示为半个字??
- Delphi 版的非技术区比CB的热闹多,借个人气问一下source insight && C# Builder Enterprise sn.Thank you
- 如何防止访问冲突?
- DELPHI6帮助
- 那位有可以播放MPEG4格式影片的控件?
- 如何跟踪到dephi的源代码中??
- I wait you!
- 紧急 ,,,,,,如何在delphi中检查是否其他程序运行。紧急 ,,,,,,
- 上海有delphi6了,哈哈.......特来一起分享!!
- 急,在线等待,如何进行数据库备份。
- 我看过好多软件里面都使用 STRINGGRID 控件,如何实现点击 fixedrow 时,可以进行排序?
Dispose()
能说得详细一点吗?
或给一些代码.
谢谢!!!!!!!!!!1
var
pd: PPersonData;
begin
if node=nil then exit;
pd:=node.data;
if pd=nil then exit;
pd.free;
showmessage(Node.Text+' deleted');
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
treeview1.items.clear;
end;
var
PersonData1: PPersonData;
PersonNode: TTreeNode;
begin
New(PersonData1); //放在这里,直接用一个指针就可以,为什么每次循环用一个呢?
Query1.First;
while not Query1.Eof do
begin
//下面这两句中的FieldByName最好换成FieldValues,效率会高一些
//从D5开始就已经不提倡使用FieldByName了
PersonData1^.PersonName := Query1.fieldbyName('PersonName').AsString;
PersonData1^.PersonID := Query1.fieldByName('PersonID').AsString;
//你的PersonNode在使用前不需要构造吗?构造的时候指定Owner不就不用自己释放了吗?
PersonNode := TreeView1.Items.Add(nil, PersonData1^.PersonName);
PersonNode.Data := pointer(PersonData1);
Query1.Next;
end;
end;一家之言,仅供参考!