窗体上有一个listbox,从数据库查询一系列地区名称。然后现在的业务处理时从一个文件夹查询一系列excel文件,文件名称就是地区名,然后我需要实现的是如果发现文件夹中的文件的名称和listbox中不一样,有可能这些excel文件的总数大于listbox中的count数。
我现在的实现逻辑是用tstringlist将excel文件名称读取出来,然后和listbox比较,然后发现有相同的,则删除,现在就出了index溢出的错误。大家帮忙看看,然后不知道是否还有更好的思路来处理。谢谢
for nI:=0 to FList.Count-1 do //Flist 是读取excel文件名的TstringList 类
begin
for mI:=lst1.Items.Count-1 downto 0 do //lst1 是listbox ,读取数据库中地区的名称
begin
if LeftStr(FList.Strings[nI],10) = LeftStr(lst1.Items.Strings[mI],10) then //经常在这里lst1就提示溢出错误
begin
try
lst1.Items.Delete(mI);//删除后listbox的count减一,因此只要找到就退出mi循环
except
on e:Exception do
begin
ShowMessage(e.message);
end;
end;
Break;
end;
end;
end;
我现在的实现逻辑是用tstringlist将excel文件名称读取出来,然后和listbox比较,然后发现有相同的,则删除,现在就出了index溢出的错误。大家帮忙看看,然后不知道是否还有更好的思路来处理。谢谢
for nI:=0 to FList.Count-1 do //Flist 是读取excel文件名的TstringList 类
begin
for mI:=lst1.Items.Count-1 downto 0 do //lst1 是listbox ,读取数据库中地区的名称
begin
if LeftStr(FList.Strings[nI],10) = LeftStr(lst1.Items.Strings[mI],10) then //经常在这里lst1就提示溢出错误
begin
try
lst1.Items.Delete(mI);//删除后listbox的count减一,因此只要找到就退出mi循环
except
on e:Exception do
begin
ShowMessage(e.message);
end;
end;
Break;
end;
end;
end;
indexof是全字符匹配, 向例子中的部分字符如何匹配呢?
试试for downto吧