为什么文件名变成了‘.’?

yangaocheng 2003-08-06 05:30:03
我写了一个用来展示计算机系统目录的过程:
procedure TForm1.DisplayDirectory(sPath:string;Node:TTreeNode);
var
CurrentNode:TTreeNode;
sr:TSearchRec;
begin
if FindFirst(sPath+'\*.*',faDirectory,sr)=0 then
begin
if(sr.Attr and faDirectory)<>0 then
if (sr.Name<>'.') and (sr.Name<>'..') then
begin
CurrentNode:=TreeView1.Items.AddChild(Node,sr.Name);
CurrentNode.ImageIndex:=1;
CurrentNode.SelectedIndex:=1;
DisplayDirectory(sPath+'\'+sr.Name,CurrentNode)
end
end
end;

TreeView1是我建的一个树视图构件,用来展示目录结构。我发现程序在运行时有问题:当我设置sPath的初始值为c盘根目录时(即 sPath:=c:),程序显示sr.Name=Documents and Settings,运行没有问题,但再次调用DisplayDirectory过程后,sr.Name='.'。(按道理讲,第二次调用DisplayDirectory过程时,此时的sPath:=c:\Documents and Settings,FindFirst函数应该搜索c:\Documents and Settings目录下的第一个文件目录,找到后结果放置于sr中,sr.Name的值应该是一个目录名,而不应该是'.'呀),我觉得很奇怪???
小弟我是delphi新手,恳请各位大虾帮帮忙,不胜感激!!!
...全文
115 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
李_军 2003-08-06
  • 打赏
  • 举报
回复
var
SearchRec : TSearchRec;
ItemTemp : TTreeNode;
begin
with ATreeView.Items do
try
BeginUpdate;
if ADirectory[Length(ADirectory)] <> '\' then
ADirectory := ADirectory +'\';
if FindFirst(ADirectory + '*.*', faDirectory, SearchRec) = 0 then
begin
repeat
if (SearchRec.Attr and faDirectory = faDirectory) and (SearchRec.Name[1] <> '.') then
begin
if (SearchRec.Attr and faDirectory > 0) then
ARoot := AddChild(ARoot, SearchRec.Name);
ItemTemp := ARoot.Parent;
DirToTreeView(ATreeView, ADirectory + SearchRec.Name, ARoot, AIncludeFiles);
ARoot := ItemTemp;
end
else if AIncludeFiles then
if SearchRec.Name[1] <> '.' then
AddChild(ARoot, SearchRec.Name);
until FindNext(SearchRec) <> 0;
FindClose(SearchRec);
end;
finally
EndUpdate;
end;
end;
yesxwl 2003-08-06
  • 打赏
  • 举报
回复
遍历目录时第一个确实是'.'代表根目录
第二年是'..'代表上级目录
在纯dos环境下进入一个目录,dir列出所有文件就会看到最前面两个是.(dir)和..(dir)

5,388

社区成员

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

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