gpt4 book ai didi

performance - 快速搜索 Tmemo 行的方法

转载 作者:行者123 更新时间:2023-12-03 16:43:49 25 4
gpt4 key购买 nike

我在表单上有一个 TMemo,它允许用户输入项目列表。人们可以在这里输入许多项目。当他们单击“保存”时,TMemo 的内容将被选中,然后添加到数据库中。

我在 TStringList 中有第二个列表,我对其进行循环并检查它的任何项目是否包含在 TMemo 中。

简而言之,它看起来像这样

....
//slItems = TStringList
//mItems = TMemo
for i := slItems.Count -1 downto 0 do
begin
if mItems.Lines.IndexOf(slItems[i]) = -1 then
slItems[i].Delete;
end;
----

这样stringlist循环了,检查memo中是否存在,不存在则从list中删除。

但是,对于 200 多个项目,速度开始变慢很多,而对于 1000 个,它变得非常糟糕。

搜索 TMemo 最快的方法是什么?

最佳答案

将所有 TMemo 读入本地 TStringList 并从中处理。每次访问 TMemo.Lines 时,您都依赖 Windows 消息传递与 Windows 提供的多行文本框对话。效率低下!

....
//slItems = TStringList
//mItems = TMemo
//L = TStringList
L.Text := mItems.Text; // edited per David's suggestion.
L.Sorted := True; // per Uwe Raabe's suggestion.
for i := slItems.Count -1 downto 0 do
begin
if L.IndexOf(slItems[i]) = -1 then
slItems[i].Delete;
end;
----

关于performance - 快速搜索 Tmemo 行的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5621364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com