多线程的问题,麻烦大家给看一下。 ( 积分: 200 )

  • 主题发起人 主题发起人 like_ask
  • 开始时间 开始时间
L

like_ask

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TQueryThread.Execute;
var
p:integer;
Linkbuf:string;
va,ev,ename:string;
i,m,f :integer;
source:string;
be,en:integer;
begin
try
{IF ttmemo=nil then
ttmemo:=Tstrings.Create
else
ttmemo.Clear;
}
m:=333;

for f:=0 to mdo
begin
Htm:= getwebpage(mainfrm.tempurl+fuserid+mainfrm.tempurla+inttostr(f)+mainfrm.tempurlc);
Delete(htm,1,pos('saf d',htm));
Mainfrm.Statusbar1.Panels[2].Text:='当前第: '+inttostr(f)+' 页';
for i:=0 to StrCounter(htm,va)do
begin
P:=Pos(Va,Htm);
If p>0 then
Delete(Htm,1,P+Length(va)-1) else
Exit;
Linkbuf:=copy(Htm,0,32);
Delete(Htm,1,32+length(ev));
Ename:= copy(htm,1,pos('</a>',htm)-1);
Delete(Htm,1,4);
If pos(Linkbuf,mainfrm.memo2.Text)=0 then
begin
If Mainfrm.CheckBox1.Checked then
begin
If Pos(trim(mainfrm.ComboBox1.text),GetWebPage(va+Linkbuf))>0 then
mainfrm.memo2.lines.Add(Linkbuf+' | '+Ename+' | '+Mainfrm.ComboBox1.Text);
End
else
begin
mainfrm.memo2.lines.Add(Linkbuf+' | '+Ename);
end;
synchronize(addtottmemo);//
end;


end;

end;
except
end;
//ttmemo.Free;
end;

在这其中循环只能执行一次,麻烦大家指点一下。
 
对了就是循环用FOR I:= 0 TO M
这种也不行,
 
你把 StrCounter(htm,va)换成一个数值常量试试
再用就是循环内部可以出现错误了
直接跳了了
你把把Try...except end;
禁用
让Delphi产生一些错误
 
谢谢楼上的,请大家继续谈,我先试试声明常量,因为小弟刚学。
 
难道没有几个人懂,还是没人愿意回答?还是?
 
我以前也做过,应该是在循环内部加上线程同步就可以执行了。
 
设个断点,单步跟踪调试看一下,看在哪个地方跳出了循环.
 
试了,他第一次小循环完直接就跳出,不知道为什么?
还有我已经作了同步,可是还是不行,谁能指点一下?
 
在for i:=0 to StrCounter(htm,va)do
这个循环里跳出的吗?
具体执行到哪一行代码跳出的?
另:你的StrCounter(htm,va)有没有打印出来看看是多少,在循环之前把这函数返回值赋值给一个变量,看看值为多少.
 
多人接受答案了。
 

Similar threads

I
回复
0
查看
698
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
639
import
I
后退
顶部