下面的程序只是一个测试,表明该方法的速度,具体的写入数据请自行
解决。(可能只兼容 D5) 在我的计算机上 C333/64M 生成 8x8x8x8的
树并完全加载不到 1s. 不过超过 几 万条记录时不太理想。但是可以
拆分成几个 不到 5000 条的子树载入并合并,性能可以满足要求.
Procedure TForm1.Button1Click(Sender: TObject);
Var ST:TMemoryStream;
LA,LB,LC,LD:Integer;
SA,SB,SC,SD:String;
CA,CB,CC,CD:String;
Max:Integer;
begin
Max:=7; //将生成 7x7x7x7 的树.
ST:=TmemoryStream.Create; //建立内存流
SA:=Chr($0D)+Chr($0A); //各级节点标志
SB:=SA+Chr($09);
SC:=SB+Chr($09);
SD:=SC+Chr($09);
For LA:=1 to Max DO
Begin
CA:='Root '+Inttostr(LA); //根节点内容
ST.Write(PChar(CA)^, Length(CA)); //写入根节点
For LB:=1 to Max DO
Begin
CB:='LevelII '+Inttostr(LB); //次级节点内容
ST.Write(PChar(SB)^, Length(SB)); //写入次级标志
ST.Write(PChar(CB)^, Length(CB)); //写入次级内容 下同,略
For LC:=1 to Max Do
Begin
CC:='LevelIII '+Inttostr(LC);
ST.Write(PChar(SC)^, Length(SC));
ST.Write(PChar(CC)^, Length(CC));
For LD:=1 to Max do
Begin
CD:='Node '+Inttostr(LD);
ST.Write(PChar(SD)^, Length(SD));
ST.Write(PChar(CD)^, Length(CD));
End;
End;
End;
ST.Write(PChar(SA)^, Length(SA)); //写入根节点标志
End;
ST.Position:=0;
TreeView1.LoadFromStream(ST); //从流中载入
ST.Free;
End;