VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
123
返回列表 发新帖
楼主: yunshenxin

文本删除重复算法问题~~高手请指点下

[复制链接]

4

主题

19

帖子

17.00

积分

新手上路

Rank: 1

积分
17.00
 楼主| 发表于 2020-3-31 23:00:02 | 显示全部楼层
难道是我的DELPHI有问题
回复

使用道具 举报

0

主题

25

帖子

18.00

积分

新手上路

Rank: 1

积分
18.00
发表于 2020-4-1 11:45:01 | 显示全部楼层
没有问题的。测试很多遍
回复

使用道具 举报

4

主题

19

帖子

17.00

积分

新手上路

Rank: 1

积分
17.00
 楼主| 发表于 2020-4-2 14:45:01 | 显示全部楼层
TmpStrings.Assign(TStrings(StringsList.Items[Pred(StringsList.Count)]));
运行到这里就出现了
回复

使用道具 举报

0

主题

25

帖子

18.00

积分

新手上路

Rank: 1

积分
18.00
发表于 2020-4-3 12:45:01 | 显示全部楼层
你重新建个文本文件,把你的文本重新拷贝到新文本文件里面。 你的问题出在你原来的文本文件里面有带回车的空行
回复

使用道具 举报

4

主题

19

帖子

17.00

积分

新手上路

Rank: 1

积分
17.00
 楼主| 发表于 2020-4-3 16:15:01 | 显示全部楼层
好的,3Q
回复

使用道具 举报

0

主题

25

帖子

18.00

积分

新手上路

Rank: 1

积分
18.00
发表于 2020-4-3 19:45:01 | 显示全部楼层
我把算法修改了一下:

..........
//把数据写入到List
    StringsList := TList.Create;
    for Idx := 0 to Pred(Memo.Lines.Count) do
    begin
      if Pos(',', Memo.Lines[Idx]) > 0 then //去掉空行
      begin
        Strings := TStringList.Create;
        Strings.Delimiter := ',';
        Strings.DelimitedText := Memo.Lines[Idx];
        StringsList.Add(Pointer(Strings));
      end;
    end;

..............
回复

使用道具 举报

0

主题

25

帖子

18.00

积分

新手上路

Rank: 1

积分
18.00
发表于 2020-4-4 09:45:01 | 显示全部楼层
更严谨的算法应该是这样:

//把数据写入到List
    StringsList := TList.Create;
    for Idx := 0 to Pred(Memo.Lines.Count) do
    begin
      Strings := TStringList.Create;
      Strings.Delimiter := ',';
      Strings.DelimitedText := Memo.Lines[Idx];
      if Strings.Count = 5 then //只处理含5列的行
        StringsList.Add(Pointer(Strings));
    end;
回复

使用道具 举报

4

主题

19

帖子

17.00

积分

新手上路

Rank: 1

积分
17.00
 楼主| 发表于 2020-4-4 15:15:01 | 显示全部楼层
你真的是好厉害~~算法想的这么灵活~谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表