【发布时间】:2012-02-03 04:47:36
【问题描述】:
我有一个 TMemo,它包含相当多的文本,80M(大约 400K 行)。
TMemo 设置为 WordWrap = FALSE,不需要查找包含在 2 行中的文本。
我需要一种快速的方法来查找文本,从头开始,然后找到下一个。
所以,我在 TMemo 中放置了一个用于放置文本的 TEdit 和一个用于查找文本的 TButton。
我正在考虑使用 Pos(),逐行检查,但这会很慢。 而且我不知道如何确定当前光标位置的 TMemo.Lines[index]。
任何人都可以提出解决方案?
谢谢
更新:
我从这里找到了解决方案: Search thru a memo in Delphi?
SearchText() 函数运行迅速,而且非常快。 花了几秒钟在底端搜索唯一的字符串。
【问题讨论】:
-
如果你使用了丰富的编辑控件,你可以使用
EM_FINDTEXT,它包含在TRichEdit的FindText方法中。 -
我认为使用带有
TMemo.Lines.Text属性的Pos函数应该更快;虽然它也可能找到包裹的子字符串,但我认为这不是问题。 -
关于 SO 的类似问题:search-thru-a-memo-in-delphi。不知道快不快,不过答案有索引位置的解决方案。
-
@Serg:你是对的。我从这里找到了一个函数:stackoverflow.com/questions/4232709/…
-
测试了上面的 SearchText(),速度非常快!
标签: delphi full-text-search delphi-7 memo