FindNext(sr)遍历目录下的文件,win2000没有问题,win2003有问题,请教!!急

pdjwind 2009-09-10 04:56:09
if FindFirst(filedir+'\*.*', faAnyFile, sr) = 0 then
begin
repeat
if (sr.Attr and faDirectory)=0 then
begin
tempAttri:=copy(sr.Name,LastDelimiter('.',sr.Name)+1,length(sr.Name));
if tempAttri = 'zip' then
begin
temp:='x '+filedir+'\'+sr.Name+' '+filedir+'\';
ShellExecute(handle,nil,'winrar',pchar(temp),nil,SW_HIDE);//****
sleep(5000);
deleteFile(filedir+'\'+sr.Name);
Continue ;
end;
parseAutoNLXMLToDb(filedir+'\'+sr.Name);
inc(filenum);
DateTimeToString( dirctDir,'yyyymmdd',now);
if not DirectoryExists('.\bak_nl\'+dirctDir) then
if not CreateDir('.\bak_nl\'+dirctDir) then
DisplayMessage(Format('创建备份文件夹错误!%s',['.\bak_nl\'+dirctDir]));

CopyFileTo(filedir+'\'+sr.Name,'.\bak_nl\'+dirctDir+'\'+sr.Name);
deleteFile(filedir+'\'+sr.Name);
end; //end if
until FindNext(sr) <> 0; <--------------在该处,win2000下会寻找//***解压后的文件,但在win2003下结束遍历。假定当前目录下只有一个压缩文件。
FindClose(sr);
end; //end if findfirst

这是一个在当前目录下,搜寻压缩文件,解压缩(解压缩到当前目录)后,处理的流程。在win2000下没有问题,win2003下解压缩后,不能继续FindNext(sr)到解出来的文件。哪位碰到过类似情况?高手帮帮我!谢了
...全文
187 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ahjoe 2009-09-18
  • 打赏
  • 举报
回复
遍历完了,再一个个解压不好吗
dahai9825 2009-09-18
  • 打赏
  • 举报
回复
加个临时目录处理不是更好吗
de410 2009-09-18
  • 打赏
  • 举报
回复
加压后目录刷新一下
uses ShlObj;

SHChangeNotify(SHCNE_ASSOCCHANGED,SHCNF_IDLIST,nil,nil);

还有
FindFirst(filedir+'\*.*', faAnyFile and faDirectory, sr);
cnhxjtoa 2009-09-15
  • 打赏
  • 举报
回复
关注
oushengfen 2009-09-11
  • 打赏
  • 举报
回复
这个是有可能啊,因为你的文件信息是后来创建的。
haitao 2009-09-10
  • 打赏
  • 举报
回复
功能是找出filedir下的所有zip文件,解压缩出来?

遍历时,把zip解压到外部的一个子目录,最后再全部移回来,是不是比较好?
飞天揽月 2009-09-10
  • 打赏
  • 举报
回复
没遇到过。。。是不是有文件结构缓存 你第一次读取的时候他已经记录了 当你解压缩后 没有立刻反映到你得程序中

5,928

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧