2011-01-07 27 views
0

嗨,我有stringlist ...在我的字符串列表中if if item_type <>'remark'和gL_dept <>''將檢查記錄.. 如果gl_dept中的記錄具有相同的值400,400,401 .. 400的值出來2次 所以只加400一次纔會去下一個記錄..但是我的問題是 當我做比較時,如果lstDept.indexOf(sdept)<> -1沒有去這個說法,但它會回本聲明如果(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; 

回答

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; 
+1

另外的位置,有一對夫婦的額外要求,以tblSODGL_DEPT.AsString可能被sDept替換。 – 2011-01-07 04:04:20