adotable1.First;
   while not adotable1.Eof do
   begin
      if listbox1.Items.IndexOf(adotable1.fieldbyname('name').AsString)=-1 then
         listbox2.Items.Add(adotable1.fieldbyname('name').AsString);
         adotable1.Next;
   end;   程序如上,为何indexof函数总是返回-1呢?listbox1有几个items,要和一个表adotable1的name字段比较,在listbox2中添加adotable1表中与listbox1不相同的记录,先谢谢各位!

解决方案 »

  1.   

    逻辑上没问题呀IndexOF是大小写敏感的
      

  2.   

    先谢谢,可是我数据库表内容都是跟listbox1内容没大小写问题,还有什么限制indexof吗?搞了一个上午啦,大家帮帮忙啦!
      

  3.   

    adotable1.First;
       listbox1.Items.Clear;
       while not adotable1.Eof do
       begin
          
          if listbox1.Items.IndexOf(adotable1.fieldbyname('name').AsString)=-1 then
             listbox2.Items.Add(adotable1.fieldbyname('name').AsString);
             adotable1.Next;
       end;
      

  4.   

    to guanjueweimiao(感觉微妙) :
      listbox1.Items.Clear;把listbox1内容清空了,怎么比较啊??(listbox1有几个items,要和一个表adotable1的name字段比较)  大家有什么好的方法可以把不同的记录比较出来吗?
      

  5.   

    listbox1存在几条items与数据库表对应,但我已试过取出listbox1.Items.IndexOf(adotable1.fieldbyname('name').AsString)的值,对数据库表所有记录取出的indexof值都是-1,而理论上对于表记录与items对应的indexof值就不应该是-1,为什么呢?
      

  6.   

    问题解决了,如trim(adotable1.fieldbyname('name').AsString),对从数据库中取出的数据加trim()函数.多谢大家的努力!