为什么当循环次数超过50次的时候,程序会不运行了,死掉状态。请各位高手出招!多谢了!(0分)

  • 主题发起人 主题发起人 xieyj
  • 开始时间 开始时间
X

xieyj

Unregistered / Unconfirmed
GUEST, unregistred user!
var Title:array [0..1000] of string;
i:integer;
with query1 do
begin
close;
sql.clear;
sql.add('select * from book_main where type='''+treeview.Selected.Text+'''');
Try
Open;
count:=query1.RecordCount;
While Not Eof do
for i:=0 to query1.RecordCount-1 do
begin
Title:=GetTitle(trim(Fieldbyname('Title').Asstring));
AssignFile(html,savedir+GetTitle(trim(Fieldbyname('Title').Asstring))+'.htm');
System.SetTextBuf(html,htmlBuf);
Rewrite(html);
writeln(html,'<HTML>');
Writeln(html,'<HEAD>');
Writeln(html,'</HEAD><BODY>');
writeln(html,'<div align=center>');
writeln(html,GetTitle(trim(Fieldbyname('Title').Asstring)));
writeln(html,'</div><br>');
writeln(html,htmtotxt(Fieldbyname('Content').Asstring));
writeln(html,'</BODY>');
writeln(html,'</HTML>');

CloseFile(html);
Writeln(hhc,'<LI> <OBJECT type="text/sitemap">');
Writeln(hhc,'<param name="Name" value="'+GetTitle(trim(Fieldbyname('Title').Asstring))+'">');
Writeln(hhc,'<param name="Local" value="'+GetTitle(trim(Fieldbyname('Title').Asstring))+'.htm">');
Writeln(hhc,'</OBJECT>');
Next;
end;
Except
On E:exception do
Application.MessageBox(PChar(E.Message),'错误提示:',mb_ok+mb_iconinformation);
end;
end;
 
1、最好不用RecordCount 使用While not Eof
2、循环中添加Application.ProcessMessage
 
to yzhshi:
具体怎么修改。谢谢!
 
>> While Not Eof do
>> for i:=0 to query1.RecordCount-1 do
这是什么意思?
只要上面第一句。第二句删除,i的赋值自己考虑可以自己加——如果需要
另外Application.ProcessMessage放在这两句下面就可以了·
 
谢谢指点,但Application.ProcessMessage是什么意思呢?
 
让进程可以接收消息,也就是可以做其他的事,
 
在执行这这句话的时候能够处理其他事件,处理结束后再继续执行。
相比线程功能是弱了一些,但是却方便很多,适用于一般应用。
 
谢谢各位:
但是我把for i:=0 to query1.RecordCount-1 do
去掉后,只用While Not Eof do
好象想遍历的读出数据库中的数据读不出来。如果换成for i:=0 to query1.RecordCount-1 do
把While Not Eof do
去掉是否可以
 
用while not eof do
就可以了,不必用for语句,要不就重复了,
我一直是这样用的,目前也是
 
接受答案了.
 
后退
顶部