Наброски поиска - PullRequest
       8

Наброски поиска

1 голос
/ 27 октября 2009

IDE: Delphi 1 16-бит (Да, он старый, нет, я не могу позволить себе более новую версию или оборудование, необходимое для его запуска. Кроме того, я просто изучаю Delphi, поэтому он отлично подходит для этой цели.)

Я загрузил TOutline с именами (для представления адресной книги). Они в отсортированном порядке. Я хочу иметь возможность искать схему.

Возможные поиски:

  1. полное имя (например, Фрэнк Аллан Смит)
  2. частичное имя (например, Аллан)

Какой хороший и быстрый способ поиска по контуру?

1 Ответ

2 голосов
/ 27 октября 2009

Для отсортированного списка вы можете использовать бинарный поиск для «НАЧИНАЕТСЯ С», но для содержимого вам нужно будет выполнить линейный поиск (оценивая каждый элемент ). Прошло немного времени с тех пор, как я работал с 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...