对于指针来说,你必须要分配内存。并且必须要释放内存。因此你的实现方法应当如下 var p: Pchar; begin GetMem(p,20); p^:='ABCDED'; Node.Data:=p end; 注意,里面不能写: s:='abcdefg'; p:=Pchar(s); 因为这句的意思是把p指向s的位置。而如果s是一个局域变量的话他是会自动释放的,回头释放后你的指针就不知道跑到哪里了。因此你可能数据就会错误。或者为空。我估计你的问题也是这个原因造成的。 另外,释放内存在TreeView的OnDeletion事件中写: procedure TForm1.TreeView1Deletion(Sender: TObject; Node: TTreeNode); begin FreeMem(Node.Data,20); end |
|