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)到解出来的文件。哪位碰到过类似情况?高手帮帮我!谢了
...全文
134 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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
没遇到过。。。是不是有文件结构缓存 你第一次读取的时候他已经记录了 当你解压缩后 没有立刻反映到你得程序中
回复
相关推荐
发帖
Delphi
创建于2007-08-02

4895

社区成员

Delphi 开发及应用
申请成为版主
帖子事件
创建了帖子
2009-09-10 04:56
社区公告
暂无公告