procedure TForm1.SpeedButton5Click(Sender: TObject);
var
  a:array of Ttreenode;
  node:TTreenode;
  i,j,count:integer;
  s:string;
begin
  i:=0;j:=0;
  Count:=Treeview1.Items.Count;
  setlength(a,Count);
  node:=Treeview1.TopItem;
  while node<>nil do
  begin
   a[i]:=node;
   node:=node.getNextSibling;
   i:=i+1;
  end;
  j:=i-1;
  i:=0;
  while i<Count do
    begin
        node:=a[i].getfirstchild;
        while node <> nil do
           begin
             j:=j+1;
             a[j]:=node;
             node:=node.getNextSibling;
           end;
    i:=i+1;
  end;
 //以下用于集中输出,当然也可以在中间输出
 for i:=0 to Count-1  do
 begin
   // 我添加了下面这行就出错了
   if a[i].Level<=0 then s:='' else fillchar(s,j*5,' ');
   ////////////////////////////////////////////////////////
   listbox1.Items.Add(a[i].text);
   //我如果把上面两句改成 listbox1.Items.Add(inttostr(a[i].Level));确可以运行
 end;end;