在循环 TStringList 项时是否有避免越界索引错误的良好实践?

2023-12-09

:)

首先,我的代码

procedure TForm1.Button3Click(Sender: TObject);
var tempId,i:integer;
begin
tempId:=strtoint(edit5.Text);
plik:=TStringList.Create;
plik.LoadFromFile('.\klienci\'+linia_klient[id+1]+'.txt');
if (plik.Count=1) then
  begin
  label6.Caption:='then';
    if (tempId=StrToInt(plik[0])) then
      begin
      Label6.Caption:='Zwrócono';
      plik.Delete(0);
    end
  end
else
for i:=0 to plik.Count-2 do
  begin
    if (tempId=StrToInt(plik[i])) then
    begin
      Label6.Caption:='Zwrócono';
      plik.Delete(i);
    end;
  end;
plik.SaveToFile('.\klienci\'+linia_klient[id+1]+'.txt');
plik.Free;
end;
  • When for i:=0 to plik.Count-2 do我可以删除任何元素,但不能 最后的。
  • When for i:=0 to plik.Count-1 do我可以删除任何元素而无需 但从头到尾。因为否则列表索引越界.

发生什么事了?如何安全搜索并从 TStringList 中删除元素?


从列表中删除您想要使用的项目时downto循环,即

for i := plik.Count-1 downto 0 do
  begin
    if (tempId=StrToInt(plik[i])) then
    begin
      Label6.Caption:='Zwrócono';
      plik.Delete(i);
    end;
  end;

这确保了如果您删除项目,当您从列表末尾向下移动到列表开头时,循环索引保持有效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在循环 TStringList 项时是否有避免越界索引错误的良好实践? 的相关文章

随机推荐

  • java和python之间传递数据

    如果我的问题很菜鸟 我很抱歉 我正在运行 Django 1 2 和 pgsql 8 4 我需要在获取用户的输入后运行 Java 程序 进行一些计算并将结果返回给用户 我可以知道在 Java 和 Python Django 之间传递数据的最佳
  • 如何通过 ingress 将服务暴露给外部 Kubernetes 集群?

    我正在努力将 AWS 集群中的服务公开给外部并通过浏览器访问它 自从我的上一个问题还没有得出任何答案 我决定从几个方面简化问题 首先 我创建了一个无需任何配置即可运行的部署 基于本文 I did kubectl create namespa
  • 将字符串值聚合到列表中

    我正在尝试使用一些非常简单的逻辑将未旋转的列转换为本质上相当于分组列表的内容 然而 在有效地做到这一点上遇到了困难 本质上 我有一个数据集 如下所示 CUST ID ORDER 1 Cake 1 Bread 2 Cake 3 Cake 3
  • 使用自动实现的属性或自己实现该属性

    在 C 中 我们可以创建一个自动实现的属性 如下所示 public string MyValue get set 然而 我们也可以像这样自己创建一个属性 private string myValue public string MyValu
  • 颜色条不适用 vmin 和 vmax

    我有以下奇怪的行为 当我限制图形的范围时 颜色图仍然显示它 import matplotlib pyplot as plt import numpy as np fig ax plt subplots x np linspace 0 1 1
  • 复选框标签的 jQuery 选择器

  • Kinect / Primesense (Xtion) ROS Ubuntu 通过虚拟机 (VMware)

    由于我花了相当长的时间才弄清楚如何让 Xtion Primesense 在 VMware 上工作 所以我想在这里与大家分享 使用 Kinect 时 即使 VMware 已成功连接该设备 我也无法让 ROS 查看该设备 roslaunch o
  • ARM:为什么立即数只有 12 位?

    这是什么意思 我只有 12 位用于立即常量 所以我只能表示从 0 到 2 12 4096 的立即常量吗 操作数 2 如果是寄存器 可以有 32 位 但为什么立即数只有 12 位 这个数字从哪里来 它由指令集定义 例如 这MOV指令编码为 3
  • 如何使用 dask/dask-cudf 将单个大型镶木地板文件读取到多个分区?

    我正在尝试阅读一个大的parquet文件 大小 gt gpu size 使用dask cudf dask但它目前正在将其读入单个分区 我猜测这是从文档字符串推断出的预期行为 dask dataframe read parquet path
  • java中骑行和使用equals方法遇到的问题

    我在尝试弄清楚如何比较 AM FM 和 XM 之间的 selectedRadio 时遇到问题 以便我可以确定它当前所在的位置 然后返回特定收音机的电台 我知道我需要 equals 方法 我只是不确定使用它来获得我正在寻找的结果的正确方法 p
  • 使用 Rails 2.3.18 在 [] (Gem::LoadError) 中找不到捆绑器 (>= 0)

    我有红宝石版本ruby 1 9 3 p547 x86 64 我正在用它导轨3 0 现在我有一个 Rails 版本的项目 2 3 18 当我通过命令提示符进入项目时 它要求安装rvm使用ree 1 8 7 2012 02 x86 64 当我运
  • VS2015没有TypeScript模板,不支持TypeScript

    我正在研究 Visual Studio 2015 专业版 我已经使用 npm 安装了 TypeScript 安装了 TypeScript 2 0 3 然后我尝试使用右键单击项目的 tsScript 文件夹添加 TypeScript 文件 g
  • MPI 创建的进程的共享内存访问控制机制

    我有一个由多个进程使用的共享内存 这些进程是使用创建的MPI 现在我需要一种机制来控制这个共享内存的访问 我知道named semaphore and flock可以使用机制来做到这一点 但只是想知道 MPI 是否为共享内存使用提供任何特殊
  • 如何在 TypeScript 中实现 pluck 函数?

    我经常需要从对象中提取属性 const obj a 1 b 2 c 3 const plucked pluck obj a b a 1 b 2 然而 如果你想要类型安全 这在 TypeScript 中并不容易做到 因为我无法在 TypeSc
  • 如何在 jQuery 的 `val` 中访问元素本身?

    我的代码如下 const pagedata name Value for name email Value for email fillvalfromvar val pagedata this attr id 我需要填充所有具有以下元素的元
  • SQL 运算符与“">=”和“<=”运算符之间的差异

    我们使用 SQL 查询根据 dateFrom 和 dateTo 字段进行搜索 为此我正在使用 大于等于 gt and 小于等于 用于搜索日期字段的运算符 我还发现我们还可以使用 SQL Between 操作员做同样的事情 只是想确认一下我们
  • py.test 未启动(EBUSY:[资源设备])

    刚刚安装了 py testpip install U pytest没有错误 但是我们正在尝试启动py test我收到错误 EBUSY Resource device listdir C Users Administrator AppData
  • 简单的 html dom - 类名中的空格

    我正在使用 PHP Simple HTML DOM 从网站 不是我的 的源代码中获取元素 当我找到一个名为 board List 的 ul 类时 没有找到它 我认为这可能是一个问题空间大 但不知道怎么解决 这是一段php代码 html st
  • oracle查询中1000000转1M和1000转1K

    我想通过使用 oracle 查询显示如下给出的数字 1000000 1M 22000 22k 请问有什么方法可以在oracle查询中做到这一点吗 我认为没有标准函数 科学计数法除外 但您可以自己定义这样的函数 SQL gt WITH DAT
  • 在循环 TStringList 项时是否有避免越界索引错误的良好实践?

    首先 我的代码 procedure TForm1 Button3Click Sender TObject var tempId i integer begin tempId strtoint edit5 Text plik TStringL