IDE:Delphi 1 16位(是的,它是舊的,沒有我買不起更新的版本或者運行它所需的硬件,除此之外我只是學習了Delphi,所以它很好用。)輪廓搜索
我已經加載了一個包含名稱的TOutline(代表一個地址簿)。他們按排序順序。我希望能夠搜索大綱。
可能的搜索結果:
- 整個名稱(如弗蘭克·阿倫·史密斯)
- 部分名稱(例如,艾倫。)
什麼是搜索輪廓的好,快速的方法?
IDE:Delphi 1 16位(是的,它是舊的,沒有我買不起更新的版本或者運行它所需的硬件,除此之外我只是學習了Delphi,所以它很好用。)輪廓搜索
我已經加載了一個包含名稱的TOutline(代表一個地址簿)。他們按排序順序。我希望能夠搜索大綱。
可能的搜索結果:
什麼是搜索輪廓的好,快速的方法?
對於排序列表,您可以使用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;
我會在找到第一個匹配項後退出。 –
@sveinbringsli,你是對的。更新的例子。 – skamradt
令人印象深刻的,正在運行的Delphi 1 –
很高興地看到別人還在用Delphi 1!我在德爾福1和德爾福2010之間交叉編譯單位一點點...很有趣。 :) – Nat