多线程问题(15分)

  • 主题发起人 主题发起人 king_213
  • 开始时间 开始时间
K

king_213

Unregistered / Unconfirmed
GUEST, unregistred user!
我在程序运行时 利用多线程来搜索数据库表中符合条件的记录并将它们添加到memo里(先执行SQL语句,然后利用循环语句将符合条件的字段(str类型)添加到Tstringlist中 再利用memo1.lines.add(TStringlist);)
在数据量很小的时候(几百条) 没有问题 可是数据量大的时候(10000-20000条) 就提示‘内存溢出’请高手帮忙!!!
 
查询完毕后
数据已经存在数据集中了
为什么还要二次存贮
在内存中存两份呢
在独立的线程中将数据加载到记录集中
加载完成后再向Memo1中加就可以了
不过最好还是分段显示
不然memo1也有可能内存不够用的
 
在独立的线程中将数据加载到记录集中
加载完成后再向Memo1中加就可以了(这里该如何想memo1中加? )
 
一楼的意思是:先执行SQL语句,然后利用循环语句将符合条件的字段(str类型)
直接添加到memo1中!
不用饶弯添加到Tstringlist。。。再添加到memo1。
 
var i:integer;
SL:TStringList;
begin
SL:=TStringList.Create;
for i:=1 to 20000 do
SL.Add(inttostr(i));
Memo1.Lines.Assign(SL);
end;
 
不用tstringlist会很慢的
还有更好的方法吗??
 
不用饶弯添加到Tstringlist。。。再添加到memo1
 
我现在就用的TStringList 可是当数据库表中的数据量大的时候 搜索就会提示‘内存溢出’ 郁闷!!!
 
memo1最大为64K的内容,这是windows的控件决定的。Memo1.Lines.text所以不能多于64K的内容

要显示大于64K的可以用TListbox.items 或 TRichText代替
 
这个不是多线程问题吧.改为单线程看看还有没有问题.如果还有,就楼上的说法查看是不是超出了限制,我还真没有遇到过.
 
后退
顶部