嗨我有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;
答案 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;