冥界3大法王 发表于 2024-2-13 14:13

为啥不起作用?

为啥不起作用?


procedure RemoveDuplicateLines(const FileName: string);
var
Lines: TStringList;
I: Integer;
begin
Lines := TStringList.Create;
try
    // 加载文本文件的内容到字符串列表中
    Lines.LoadFromFile(FileName);

    // 去除重复行
    for I := Lines.Count - 1 downto 1 do
    begin
      if Lines.IndexOf(Lines) < I then
      Lines.Delete(I);
    end;

    // 将去重后的内容保存回文本文件
    Lines.SaveToFile(FileName);
finally
    Lines.Free;
end;
end;

procedure TForm7.Button2Click(Sender: TObject);
begin
RemoveDuplicateLines('X:\列表.txt');
ShowMessage('重复行已删除!');
end;

万一行了呢 发表于 2024-2-13 14:16

本帖最后由 万一行了呢 于 2024-2-13 15:01 编辑

违规删帖

sai609 发表于 2024-2-13 15:13

哪里不起作用 总得把问题说清楚啊

aukw 发表于 2024-2-13 15:26

    for I := Lines.Count - 1 downto 1 do

每删一行,这里的Lines.Count会变小吧?Lines里的最后几行没有进入循环进行比较...

Yifan2007 发表于 2024-2-13 15:26

是不是文本内容保存字符形式的问题导致对比不了

homejun 发表于 2024-2-13 17:10

查查indexof的使用方法吧,返回值的解释

冥界3大法王 发表于 2024-2-13 17:22

sai609 发表于 2024-2-13 15:13
哪里不起作用 总得把问题说清楚啊

没报错,但是重复行,也没有去掉啊。

DEATHTOUCH 发表于 2024-2-13 17:27

可能是保存到文件失败了,你可以打印输出一下删除后的内容有没有问题

冥界3大法王 发表于 2024-2-13 17:36

DEATHTOUCH 发表于 2024-2-13 17:27
可能是保存到文件失败了,你可以打印输出一下删除后的内容有没有问题

@DEATHTOUCH
https://www.52pojie.cn/thread-1889621-1-1.html
升级版了,请移步,多谢!

新年好,祝:万事如意,心想事成!{:301_974:}
页: [1]
查看完整版本: 为啥不起作用?