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

0 delphi

您好我有StringList的......在我的StringList如果ITEM_TYPE <>"备注"和gL_dept <>""会检查记录..如果在gl_dept记录有例如同一个值400 400,400,401..the值出来的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;  
Run Code Online (Sandbox Code Playgroud)

RRU*_*RUZ 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; 
Run Code Online (Sandbox Code Playgroud)

对此

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; 
Run Code Online (Sandbox Code Playgroud)