gpt4 book ai didi

delphi - 索引处的值的 TStringList 问题

转载 作者:行者123 更新时间:2023-12-03 19:44:16 30 4
gpt4 key购买 nike

因此,我有几个要读取并从中获取值的摘要文件。

我正在执行以下操作:

OutputSummary := TStringList.Create;
for idx := 0 to 82 do
OutputSummary.Insert(idx, '');

初始化我正在使用的值

然后,我有一个循环:
for idx := 0 to SummaryFiles.Count - 1 do
begin
AssignFile(finp, SummaryFiles[idx]);
ReSet(finp);

for ndx := 0 to 5 do
ReadLn(finp, buff);

for ndx := 0 to 82 do
begin
ReadLn(finp, buff);
temp := GetToken(buff, ' ');
buff := GetRemains(buff, '|');
temp := GetToken(buff, '|');
valuestring := OutputSummary[ndx] + delimiter + temp;
OutputSummary.Insert(ndx, valuestring);

end;

CloseFile(finp);

end;

第一个 0 到 5 循环跳过我不想阅读的行,而 0 到 82 读取的行看起来像
1. Initial Wait List|1770

所以我正在调试程序,看看它是如何与 2 个 SummaryFiles 一起工作的。

第一次通过,它完美地工作。该行被正确读取,我得到了值,当我插入 valuestring 时,它看起来像“,1770”(例如),我还可以在插入命令之后突出显示 OutputSummary[ndx] 并查看该值是否正确插入。

然后我打开第二个文件,它也可以正常工作,直到该行
valuestring := OutputSummary[ndx] + delimiter + temp;

第一次,OutputSummary[0] 是正确的并添加了正确的行。

但是,OutputSummary[1] 到 OutputSummary[82] 与 OutputSummary[0] 相同!这是没有意义的,因为当我第一次添加这些值时,我可以看到 OutputSummary[1] 到 82 是唯一且正确的。

任何人都可以看到问题吗?是调试器错误吗?我只是错过了一些我看不到的明显东西吗?

谢谢

最佳答案

在我看来,您正在尝试创建某种表,每个输入文件一列,文件中每行一行,各列由 delimiter 分隔。 .如果是,请调用 .Insert在字符串列表上不会完全正常工作,因为你最终会插入 83 * SummaryFiles.Count行。

而不是 Insert打电话,你需要这样的东西:

if OutputSummary.count > ndx then
OutputSummary[ndx] := valuestring
else OutputSummary.Add(valuestring);

看看是否有帮助。

此外,您可能需要考虑将“魔数(Magic Number)” 82 替换为有意义的常数,例如 const LINES_TO_READ = 82 .这使得阅读代码和理解它应该做什么变得更容易。

关于delphi - 索引处的值的 TStringList 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6271236/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com