解决方案 »
- uses 一些基本概念
- 紧急!!!OCX控件安装问题!!!
- 程序员可以分为几个层次?十层(请见详述)!
- delphi 是不是不支持sql2000中的varchar型字段呀,急!在线等
- TreeView的子项和指针配合起来保存表的字段值,我好久以前用过现在忘了,请高手指点!!
- 修改windows2000的计算机的工作组
- 如何用adox 確定access的表中哪一個是外鍵哪一個是主鍵呢
- Kingron:我给你发的妹儿你收到了吗?
- 请介绍几本关于socket的电子书(delphi)!
- 数据库的readonly问题
- 程序共享tsocketconnection连接
- 两个公司,一个售后一个研发。。去哪个好?薪酬都一样
begin end;
----------------------------------------------------
begin
with Memo2 do
begin
SetLength(str, Lines.Count,2);
for I := 0 to Lines.Count - 1 do
begin
str2:=SplitString( Lines[i],#9);
str[I,0]:=str2[0];
str[I,1]:=str2[1];
end;
end;
with Memo1 do
begin
for i := 0 to Lines.Count - 1 do
begin
if Lines[i]<>'' then
begin
ReStr:='';
for n := low(str) to High(str) do
begin
if Trim( Lines[i])=str[n,0] then
begin
ReStr:= Lines[i]+#9+str[n,1];
Continue;
end;
end;
if ReStr<>'' then
begin
Lines[i]:=ReStr;
end else
begin
Lines[i]:= Lines[i]+#9+'未找到数据';
end;
Application.ProcessMessages;
Gauge1.MinValue:=0;
Gauge1.MaxValue:= Lines.Count;
Gauge1.Progress:=gauge1.Progress+1;
end;
end;
end;
end;
另设一个Tstringlist,最后将其写入Memo1
那么在组织数据的时候 我就会这样做
1、SS1 :Tstrings
ss2:Tstrings ss1.AddObject('AA01'#9'张三',TObject($AA01)) ;
........
ss2.AddObject('AA01',TObject($AA01)) ;
.......
for I:=0 to ......
index := ss1.IndexOfObject(ss2.Objects[i])
if index >=0 then 找到zai ss2 中做标记
2、如果用了memo这类组件,在循环的时候 由于要刷新显示 会影响数据 所以最好是自己创建Tstrings来处理,处理完后 把记过传给memo组件。
就在增加一个对应的表把AA01 这个东西数字化。用上面的办法 就可以。
即使是下面简单的这2句,也是比蜗牛还慢,何况还有其它的开销:
for i:=0 to 10000 do
memo2.lines[i]:='未找到';帮你把demo写出来,10000笔数据差不多2秒搞定,能接受的了吧;
还有其它更快的办法暂不告诉你,能适用数据更多的情况,你的问题用下面的方法就够了!!!procedure TForm1.Button1Click(Sender: TObject);
const space=' ';{这里的空格根据你的Memo2中ID和Name之间空格决定,自己改合适的}
var
i,j:Integer;
TmpStr:string;
sList:TStringList;
begin
sList:=TStringList.Create;
try
for i:=0 to Memo1.Lines.Count-1 do
begin
TmpStr:=Memo1.Lines[i]+space;
j:=pos(TmpStr, Memo2.Text);
if j >0 then
TmpStr:=Memo2.Lines[SendMessage(Memo2.Handle,EM_LINEFROMCHAR,j,0)]
else
TmpStr:=Memo1.Lines[i]+space+'未找到' ; sList.Add(TmpStr)
end;
Memo1.Lines.Assign(sList); finally
sList.Free;
end;
end;
2.5万数据,这个应用(ID to Name并显示),带显示超过2秒我觉得肯定可以再优化
最近 想找个做windows应用开发的人。所以跑到论坛来看看,也抽空回答一些delphi板块的帖子。发现现在做delphi的很极端,NB的依然很NB。但是很多帖子问题都是 抱着叫别人帮做demo什么的。自己不考虑 优化自己的逻辑 和数据结构。
这个帖子 数据量大 不是有序数据 然后需要查找 。其实做一个排序后用2分查找 将大大提高效率
之所以说这么多 还是希望不管用什么工具的人 都要随时都考虑 效率优化。