注一个子节点都比他的父节点多两位。 
比如A这个节点的特正码是'00'他的第一个字节点就是'0000'第二个字节点就是'0001'q我现在是给选一个节点后统计他的子节点个数。我的问题是为什么我的I2没有进行计数。怎么都是0阿。 
if tvarea.Selected<>nil then 
   begin 
    s1:=tvarea.Selected.Text; 
    // tvarea.Items.AddChild(tvarea.Selected,edit1.Text); 
     i2:=0; //选择一个节点的时候就给I2清0 
      while not qget3.Eof do      //找他的父节点 
        begin 
        s2:=qget3.fieldbyname('sname').asstring; 
         if s2=s1 then 
             begin 
              path1:=qget3.fieldbyname('spath').asstring; //取出父节点的特征码 
                 while not qget5.eof do 
                 begin 
                 if path1=copy(path2,0,length(qget5.fieldbyname('spath').asstring)-2) then//查找父节点下有多少个字节点 
                 i2:=i2+1; 
                 qget5.Next; 
               end;                edit1.Text:=inttostr(i2); 
             end; 
             qget3.Next; 
             qget5.First; 
         end; 
         end;

解决方案 »

  1.   

    if path1=copy(path2,0,length(qget5.fieldbyname('spath').asstring)-2) then//查找父节点下有多少个字节点 
                     i2:=i2+1;
    path2有初值吗?跟踪一下,看看各个变量的值是否是预期的。
      

  2.   

    我传了值了还是一样的情况。
    PATH2的就是path2:=copy(qget5.fieldbyname('spath').asstring,0,length(qget5.fieldbyname('spath').asstring)-2);
    我现在传了。还是一样的问题。
    把while not qget5.eof do 
                     begin 
                     if path1=copy(path2,0,length(qget5.fieldbyname('spath').asstring)-2) then//式改成了    while not qget5.eof do
                     begin
                     path2:=copy(qget5.fieldbyname('spath').asstring,0,length(qget5.fieldbyname('spath').asstring)-2);
                     if path1=path2 then//查找父节点下有多少个字节点
                     i2:=i2+1;
                     qget5.Next;
      

  3.   

    加断点,看看PATH1和path2的值是多少。
      

  4.   

    建议先找本DELPHI的书翻翻,调试还是很有用的。可以在需要加断点的地方双击,左边出现红点以后再运行,程序就会在加断点的地方停住了。我感觉你的代码肯定是取值有问题。