关于winexec的几个问题,高手请近来帮我看看!!!(100分)

  • 主题发起人 主题发起人 阿宝
  • 开始时间 开始时间

阿宝

Unregistered / Unconfirmed
GUEST, unregistred user!
最近碰到一个问题,是这样的,我用winexec(‘’,SW_hide),其实这个问题在
以前的论坛里也讨论过但是,大家好像也没有找到很好的解决办法,高手帮我看
一下!!!!
--------------------------------
winexec('dir >c:/temp/dir_info.txt',sw_hide); //执行bat文件
repeat
//temp:=temp+1;
until FileExists('c:/temp/dir_info.txt');
***问题就在这里出现了**
当列出了第一个文件的时候,dir_info.txt其实就已经存在了,然后他就执行
了下面的语句,如果,dir出来的东西很很多,要一定的时间,那么,就会和
下面的语句冲突了,delphi出现错误提示。
assignfile(f,'c:/temp/dir_info.txt');
reset(f);
while not eof(f) do
begin
readln(f,mystr);
memo1.Lines.Add(mystr);
end;
closefile(f)
怎么办才能解决好这个问题?用延时的话其实也是很难解决的,
谁知道那个bat文件执行多少时间,又或者会浪费时间。
我还想了一个办法,就是这样的思路不知可行否,帮哦看一下
repeat
读c:/temp/dir_info.txt的时间,精确到秒即可存于filetime
读系统时间nowtime
时间差:=nowtime-filetime
until 时间差>2秒//反正是大于一定的时间;
然后可以队c:/temp/dir_info.txt进行操作
end;
编一个小东西就被这个问题给卡住了,真是一件痛苦的事情啊!!更何况我刚和delphi
好上,对他还是很陌生一点小东西就要查资料,苦啊。email:sluger@etang.com
 
应该可以阿,
 
大家讨论一下!!!!!!!1
 
winexec('dir >c:/temp/dir_info.tmp',sw_hide);
rename('c:/temp/dir_info.tmp','c:/temp/dir_info.txt');若出错则循环
assignfile(f,'c:/temp/dir_info.txt');
reset(f);
while not eof(f) do
begin
readln(f,mystr);
memo1.Lines.Add(mystr);
end;
closefile(f)
 
winexec 是一个过时(obsolete)的函数,建议不要去用了。
 
为何不用
FindFirstFile
FindNextFile
呢?
 
LGXing的方法不错,有创意。
不过你似乎只是要得到文件名列表而已,为什么不直接用windows api呢?
具体用哪个我也记不住了,自己查查帮助看看。
 
创建完'c:/temp/dir_info.txt'之后,再用写方式打开,出错则循环。
不过最好还是不要用winexec的方法,
用FindFirstFile和FindNextFile就可以实现的。
另外:程序员大本营上有原码。
 
多人接受答案了。
 
后退
顶部