【问题标题】:Outline searching大纲搜索
【发布时间】:2009-10-27 16:39:12
【问题描述】:

IDE:Delphi 1 16 位(是的,它很旧,不,我买不起更新版本或运行它所需的硬件。此外,我只是在学习 Delphi,所以它可以很好地达到目的。)

我已经加载了一个带有名称的 TOutline(代表一个地址簿)。它们是按顺序排列的。我希望能够搜索大纲。

可能的搜索:

  1. 全名(例如 Frank Allan Smith)
  2. 部分名称(例如 Allan)

有什么好的快速搜索大纲的方法?

【问题讨论】:

  • 令人印象深刻的是您正在运行 Delphi 1。
  • 很高兴看到其他人仍在使用 Delphi 1!我在 Delphi 1 和 Delphi 2010 之间交叉编译单元相当多……很有趣。 :)

标签: algorithm delphi search


【解决方案1】:

对于排序列表,您可以使用binary search 作为“BEGINS WITH”,但对于包含,您需要使用linear search(评估每个项目)。自从我使用 Delphi 1 以来已经有一段时间了,但这里是线性搜索:

线性搜索:

function OutlineContains(aOutline:tOutline;aText:string;Repos:boolean):boolean;
var
  aSearch : string;
begin
  Result := false;
  aSearch := uppercase(aText);
  for I := 0 to aOutline.Lines.Count-1 do
  begin
    if Pos(aSearch,Uppercase(aOutline.Lines.Text[i])) <> 0 then
      begin
        Result := true;
        if Repos then
          aOutline.SelectedIndex := i;
        exit;
      end;
  end;
end;

【讨论】:

  • 找到第一个匹配项后我会退出。
猜你喜欢
  • 2013-05-06
  • 2016-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-26
  • 1970-01-01
相关资源
最近更新 更多