在TreeView中为结点Ttreenode的Data属性赋值node.data:=PChar('字符串'),但再取data属性的值时有的结点能取到值,有的结点取为空,很奇怪,我的确为每一个结点的data属性都赋值了。
解决方案 »
- ◆问一个引用Dll的问题,好像没人问过◆
- 我想做一个远程的c/s结构的系统,能提供一个方案吗?[悬赏100分]
- 用DELPHI7时可以正常编译的程序,用DELPHI8时编译不了,在接口部分的USES中出现错误?
- 如何导出指定时间格式的字段
- FR交叉表打印问题?!
- 谁有SynEdit for Delphi7.0 的控件
- 时间查询问题,望高手赐教!!!!
- Application 变量为什么不能用?undeclared identifer:'Application'
- 为什么没人回复我的帖子!!!?
- 非标题栏窗体拖动问题
- 怎么在d7里添加fastnet控件,他对应的bpl文件是那一个????????
- 请问做一个类似acdsee的软件时怎样实现缩略图查看呢?(如果分不够再另外给)
对于指针来说,你必须要分配内存。并且必须要释放内存。因此你的实现方法应当如下
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