我在timer的事件里这样写
var
xh:integer//定义一个全局变量
procedure TClient.Timer5Timer(Sender: TObject);
pdc:HDC;
i,j:integer;
begin
pdc:=GetDc(0);
for i:=400 to 450 do
for j:=300 to 350 do
begin
if Getpixel(pdc,i,j)=0 then
begin
timer5.enablid:=false;//终止当前这个记时器
timer6.enabled:=true;//跳转到另外一个记时器里
break;//退出整个for循环
end;
end;
xh:=xh+1;
if xh=1 then setcursorpos(30,30)
else if xh=2 then setcursorpos(40,40)
else if xh=3 then setcursorpos(50,50)
else if xh=4 then
begin
xh:=0
timer5.enablid:=false;
timer6.enablid:=true;
end;
end;
_________________________________
我要实现的是.
当timer5的记时器开启时.让for以及if同时循环.
当for里的Getpixel(pdc,i,j)=0为真时.直接timer5停止.然后跳转到我要做事的timer6里.如果for里的Getpixel(pdc,i,j)=0不真的话.当if的xh+到4的时候.也是停止timer5.在跳转到timer6里.
////
试了一个晚上
我在打开这个记时器的时候.整个系统就停顿了一下.我觉得是for的问题..要等3~5秒才会恢复正常.但是我用vb写的话.一切正常.大家帮小弟解决一下.(代码临时在这里写的.如果代码那里错了.莫见怪.我只是想知道是那里出问题.让系统会停顿.)
var
xh:integer//定义一个全局变量
procedure TClient.Timer5Timer(Sender: TObject);
pdc:HDC;
i,j:integer;
begin
pdc:=GetDc(0);
for i:=400 to 450 do
for j:=300 to 350 do
begin
if Getpixel(pdc,i,j)=0 then
begin
timer5.enablid:=false;//终止当前这个记时器
timer6.enabled:=true;//跳转到另外一个记时器里
break;//退出整个for循环
end;
end;
xh:=xh+1;
if xh=1 then setcursorpos(30,30)
else if xh=2 then setcursorpos(40,40)
else if xh=3 then setcursorpos(50,50)
else if xh=4 then
begin
xh:=0
timer5.enablid:=false;
timer6.enablid:=true;
end;
end;
_________________________________
我要实现的是.
当timer5的记时器开启时.让for以及if同时循环.
当for里的Getpixel(pdc,i,j)=0为真时.直接timer5停止.然后跳转到我要做事的timer6里.如果for里的Getpixel(pdc,i,j)=0不真的话.当if的xh+到4的时候.也是停止timer5.在跳转到timer6里.
////
试了一个晚上
我在打开这个记时器的时候.整个系统就停顿了一下.我觉得是for的问题..要等3~5秒才会恢复正常.但是我用vb写的话.一切正常.大家帮小弟解决一下.(代码临时在这里写的.如果代码那里错了.莫见怪.我只是想知道是那里出问题.让系统会停顿.)
解决方案 »
- 我们公司也被告DELPHI侵权了,呵呵,不知道他哪里找到的信息
- 如何将不同的EXCEL文件合并成一个EXCEL?
- 图表
- 一个按钮控制panel的打开和关闭?
- 怎样使用Rave报表
- 怎样用一个程序终止任意一个另一个程序?怎样看见系统的全部进程?
- 了解下现在大家用DELPHI开发网上应用用什么?WEBBROKE,INTRAWEB,ACTIVEX+MIDAS?
- 在WebBrowser中,怎样判断一个网站正确连接了,还是该网页打开错误?
- ★★★★★★★★DELPHI的原子世界[不是原创]★★★★★★★★
- 一个简单的问题,送分了!!
- ★★ 是大虾就请放马过来帮小弟一把! ----关于 adoDataset的SavetoFile和LoadFromFile引起的问题
- 热烈庆祝小黑那个啥的~~~~放分~
另外,我怎么找不到你在哪儿释放你占用的显示系统资源啊?你这样,程序运行时间越长,定时器运行时间越多,你的HDC占用的资源越多,系统资源越来越少。。最后,你的机器会没有任何反应了。
实际上,你只是跳出了内循环(for j)。要想跳出整个循环,你必须:
1、使用 goto 语句;或者(你拒绝goto语句),设置标志(timer5.enabled也可算标志),在出内循环后判断,再break一次。也许你想在找到黑点后返回,你可以用exit来代替break。我建议在一开始就将timer5.enabled设置为false,然后在符合条件的情况下退出前改回true,这样可免函数内代码运行时间超长时会有重入。--
http://www.agui.googlepages.com
mailto: agui.cn@gmail.com