tree数据结构存取,想借用TTreeNodes,但是不成功,还有其它现成的tree结构能用吗?
anux 2003-01-25 05:10:26 我的数据形如下,不用显示,只是在后台处理,
curPolTree
|----Fields1
|---Strings1
|---Strings2....
.........
|----Fields2
于是我想到用树结构来操作,想借用vcl中的TTreeNodes对象,但是不成功。主要有如下问题:
1、PolData := TTreeNodes.create(nil);//这里创建时必须传入他的owner值,这个值//必须是TreeView的父类,由于我没有他的父类,就写入nil
2、PolData.Add(nil,tmpStr);//由于是要创建根结点,所以这里要写入nil。但在这里就运行出错。
我跟踪vcl源码发现如下代码:
if Node = nil then
Result := Owner.CreateNode
else
Result := Node;
也就是说,如果你在加入节点时传入的父节点为nil,那么由它的所有者自动创建一个Node。但是,我在创建PolData时是没有指定Owner的,这时它去访问它的Owner,就出现内存非法访问。
如果我在创建PolData时,指定Owner为某TreeView,那么这个poldata中的数据就与那个TreeView中的一样了,那还不如直接用一个TreeView,只是把它的Visable设为false就行了。但用一个TreeView会有不少的内存开支,并且我并不需要显示这些数据。
我说的这么详细,是因为我花了一些时间来解决这个问题,有别于那些没有丁点钻研精神的CSDNer。所以希望能得到大家的帮助。
请问:还没有没有其它比较好用的、可靠的Tree数据结构可以用?