轮廓搜索
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;
以上是 轮廓搜索 的全部内容, 来源链接: utcz.com/qa/265779.html