小弟做的程序里面有一个循环,大致从0到3000的样子。就是向数据库中 存取数据,在一个循环里面。
部分代码如下:for i:=0 to clb_Station.Items.Count-1 do
begin
if clb_Station.Checked[i] then
begin
s:=copy(clb_Station.Items[i],0,8);
with DM.ADO_zhk do
begin
Close;
SQL.Clear;
SQL.Text:='select * from st_river_f';
Open;
first;
while not Eof do
begin
{do something}
Next;
end;
end;
end;
end;
当程序进入这个循环的时候,会造成内存占有率大大增加。整个界面甚至会停止响应,给人造成死程序的印象,但当循环结束后一切又恢复正常。
所以我想用线程的方法来解决这个问题,使程序能以线程的方式运行,不会出现这种死程序的现象。
但现在一点头绪都没有,哪位大哥能帮我点拨一下呢?万分感谢!
部分代码如下:for i:=0 to clb_Station.Items.Count-1 do
begin
if clb_Station.Checked[i] then
begin
s:=copy(clb_Station.Items[i],0,8);
with DM.ADO_zhk do
begin
Close;
SQL.Clear;
SQL.Text:='select * from st_river_f';
Open;
first;
while not Eof do
begin
{do something}
Next;
end;
end;
end;
end;
当程序进入这个循环的时候,会造成内存占有率大大增加。整个界面甚至会停止响应,给人造成死程序的印象,但当循环结束后一切又恢复正常。
所以我想用线程的方法来解决这个问题,使程序能以线程的方式运行,不会出现这种死程序的现象。
但现在一点头绪都没有,哪位大哥能帮我点拨一下呢?万分感谢!
解决方案 »
- 我想买个1千左右的诺基亚手机 ,哪款好呀,求解!!!
- 改成一个显示Form并能传递给全局变量的函数怎么做
- !!!!!简单问题,如果制作无窗体程序,救命啊!
- dbgrid能不能增加一个虚拟列,用来标识这行是否选中?
- IdTCPServer接收数据行数据溢出如何处理???在线等分布够加
- 请教一个关于数据库的问题,有分!
- 原有一个c/s结构的系统,要通过网页方式发布(就是要转成b/s),以哪种方式使改动最少?最合理的方式?
- 问题1: 如何获得本机的IP地址并将其改之,问题2......
- fortran写的生成二进制文件,怎么改成delphi的?请大家看看,帮帮忙!
- 怎样在窗体外画透明的画?
- [Error] Unit4.pas(172): Undeclared identifier: 'GetAddrString'
- 请教:对两个表的操作?
建议不要用select * from st_river_f 用select 需要用的字段名 from st_river_f
还有就是你为什么要把select 放在循环里面 ,看你的代码在循环里面是不用写select 可以写在外面。