程序运行时候不能移动,等结果出来了才能移动。。。。。(100分)

  • 主题发起人 主题发起人 flanker
  • 开始时间 开始时间
F

flanker

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序循环加密一个目录下所有文件,可是在加密的时候,程序都动不了,没有任何反映,直到加密都完成,程序才活过来。。。
怎么办?
 
循环中加如 :
Application.ProcessMessages;
 
Application.ProcessMessages;
 
上面两位说的很对,
你还可以开一个线程执行你的加密功能。
 
我加到循环中这句话 可是还是不起作用啊。。。。。。。
for i := 0 to ListBox1.Items.count - 1do
begin
// 判断该文件是否存在
if not FileExists(ListBox1.Items.Strings) then
begin
ListBox2.Items.Add('文件不存在)');
end;

Application.ProcessMessages;
if(FileExists(ListBox1.Items.Strings)) then
begin
ListBox2.Items.Add('正在加密文件'+ListBox1.Items.Strings+'......');
try
// 调用加密函数
RSAEncryptProcess(ListBox1.Items.Strings);
ListBox2.Items.Add('文件加密成功!');
except
on E: Exceptiondo
ListBox2.Items.Add('文件加密失败('+E.Message+')');
end;
end;
end;
 
建议改成线程.这样最好.
 
应该在循环中加入
sleep(0);//其中这里可以根据实际情况调节时间。
Application.ProcessMessages;
可以解决该问题。我以前也碰到过该问题,并且使用该方法解决。
当然采用线程也可以解决该问题。
 
这个问题已搞定,谢谢大家,我是在加密的那个函数中加入Application.ProcessMessages;就搞定了。。。哈哈
 

Similar threads

回复
0
查看
690
不得闲
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部