如果从StringList中删除不是最后一项,则会出现错误

时间:2019-04-11 01:41:46

标签: delphi

我目前的代码有问题

for i := 0 to stringlist1.count - 1 do
begin
  found := false;
  for j := 0 to stringList2.count - 1 do
  begin
    if stringList1[i] = stringList2[j] then
    begin
      found := true;
      break;
    end;
  end;
  if not found then
  begin
    stringlist1.delete(i); 
  end;
end;

如果我在stringList1中有多个项目,并且找不到的项目是第一个,或者是中间的某个位置(不是最后一个),那么我会得到一个错误:列表索引超出范围(*)

例如,如果我在stringList1中有2个项目,并删除last(2nd),则没有错误。如果我删除第一个(不是最后一个),则会出现错误:边界(1)的列表索引ouf出现。

我不确定从哪里开始解决此问题。

0 个答案:

没有答案