在进行比较后将数据插入到stringlist中

时间:2011-01-07 03:29:14

标签: delphi

嗨我有stringlist ...在我的stringlist中如果item_type<> 'remark'和gL_dept<>''将检查记录.. 如果gl_dept中的记录具有相同的值,例如400,400,401 ......则400的值出现2次 所以一次只加400,然后它会转到下一个记录..但我的问题是 当我做比较时,如果lstDept.indexOf(sdept)<> -1不会转到此语句,但它将返回此语句.. if(tblSODitemtype).. 如何将值添加到我的stringlist中..

  lstDept := TStringList.Create;  
  tblSOD.DisableControls;  
  try       
    tblSOD.First;  
    while (not tblSOD.Eof) do begin  
      sDept := tblSODGL_DEPT.AsString;  
      if (tblSODITEM_TYPE.AsString <> 'REMARK') and  (tblSODGL_DEPT.AsString <> '' ) then begin  
         if lstDept.IndexOf(sDept) <> -1  then begin  
            lstDept.add(tblSODGL_DEPT.asstring);  
            tblSOD.Next;  
         end;    
      end;  
    end;  
  finally  
    tblSOD.EnableControls;  
    lstDept.Free;  
  end;  

1 个答案:

答案 0 :(得分:9)

我认为问题是tblSOD.Next函数调用的位置

尝试更改此

while (not tblSOD.Eof) do begin  
  sDept := tblSODGL_DEPT.AsString;  
  if (tblSODITEM_TYPE.AsString <> 'REMARK') and  (tblSODGL_DEPT.AsString <> '' ) then begin  
     if lstDept.IndexOf(sDept) <> -1  then begin  
        lstDept.add(tblSODGL_DEPT.asstring);  
        tblSOD.Next;  //Problem 
     end;    
  end;  
end; 

到这个

while (not tblSOD.Eof) do begin  
  sDept := tblSODGL_DEPT.AsString;  
  if (tblSODITEM_TYPE.AsString <> 'REMARK') and  (sDept <> '' ) then begin
     if lstDept.IndexOf(sDept) <> -1  then 
        lstDept.add(sDept);                
  end;
  tblSOD.Next;  
end;