P
phenix3344
Unregistered / Unconfirmed
GUEST, unregistred user!
我自己编写了一个遍历指定位置目录及文件的程序,对于指定的一般的目录(如D盘的任意目录)都可以正确遍历,但指定位置为C:或E:时错误,错误现象为遍历的文件数明显少于实际数,我估计可能是我的算法有问题了,请高手指点一下我的程序是哪里的问题。
递归遍历函数:
procedure TForm1.WJMDB(FatherDir: String);
var
iFindResult: integer;
SearchRec: TSearchRec;
begin
FatherDir := ExcludeTrailingPathDelimiter(FatherDir) + '/';
iFindResult := FindFirst(FatherDir + '*.*', faAnyFile , SearchRec);
iFindResult := FindNext(SearchRec); //至此系统两目录 <.> <..>浏览完毕
iFindResult := FindNext(SearchRec);
while iFindResult = 0 do
begin
if SearchRec.Attr = faDirectory then //判断是否是目录
begin
Memo2.Lines.Add(FatherDir + SearchRec.Name);
WJMDB(FatherDir + SearchRec.Name);
end
else
begin
Memo1.Lines.Add(FatherDir + SearchRec.Name);
end;
iFindResult := FindNext(SearchRec);
end;
FindClose(SearchRec);
end;
调用用WJMDB(Edit1.text)
到底是哪里的问题?请指点一下。
谢谢!!!
递归遍历函数:
procedure TForm1.WJMDB(FatherDir: String);
var
iFindResult: integer;
SearchRec: TSearchRec;
begin
FatherDir := ExcludeTrailingPathDelimiter(FatherDir) + '/';
iFindResult := FindFirst(FatherDir + '*.*', faAnyFile , SearchRec);
iFindResult := FindNext(SearchRec); //至此系统两目录 <.> <..>浏览完毕
iFindResult := FindNext(SearchRec);
while iFindResult = 0 do
begin
if SearchRec.Attr = faDirectory then //判断是否是目录
begin
Memo2.Lines.Add(FatherDir + SearchRec.Name);
WJMDB(FatherDir + SearchRec.Name);
end
else
begin
Memo1.Lines.Add(FatherDir + SearchRec.Name);
end;
iFindResult := FindNext(SearchRec);
end;
FindClose(SearchRec);
end;
调用用WJMDB(Edit1.text)
到底是哪里的问题?请指点一下。
谢谢!!!