还是FindFirst、FindNext问题!!!

xiaofeng_cxy 2002-07-01 05:12:51
procedure TForm1.Button1Click(Sender: TObject);
var
sr:TSearchRec;
begin
lb.Items.Clear;
if FindFirst(GetDirectoryName(dlb.Directory)+'*.*',faDirectory,sr)=0 then
lb.Items.Add(sr.Name);

while FindNext(sr)=0 do
if ((sr.Attr and faDirectory)=faDirectory) then
lb.Items.Add(sr.Name);

end;
这样的一段代码,对于当前目录下所有的子目录都可以找到,但是有个问题是,它连
'.','..'都算为一个目录了,面我将
if ((sr.Attr and faDirectory)=faDirectory) then

改为if ((sr.Attr and faDirectory)=faDirectory) and ((sr.Name='.')or(sr.Name='..'))then
...

还是会有'.'出现,面'..'就不出现了!
不知何解,请指教!!
...全文
103 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaofeng_cxy 2002-07-02
  • 打赏
  • 举报
回复
我知道了,有'.'是因为第一个FindFirst找出来的目录就是'.',而我没有控制它显示!!
谢谢各位
Weilibo 2002-07-01
  • 打赏
  • 举报
回复
使用Copy函数:
if (sr.Attr = faDirectory) and (Copy(sr.Name,1,1)<>'.') then
xiaofeng_cxy 2002-07-01
  • 打赏
  • 举报
回复
if (sr.Attr = faDirectory) and ((sr.Name<>'.')or(sr.Name<>'..'))then//:)

这下就只有一个 '.'出现
别的什么都没有了!!!
没有高手指教一下吗?
i_Fan 2002-07-01
  • 打赏
  • 举报
回复
改为if (sr.Attr = faDirectory) and ((sr.Name<>'.')or(sr.Name<>'..'))then//:)
xiaofeng_cxy 2002-07-01
  • 打赏
  • 举报
回复
不好意思,刚刚是打错了,本来就是
((sr.Name<>'.')and(sr.Name<>'..') then
lb.Items.Add(sr.Name);

可是这样还是会在ListBox的第一条就加上了'.'!!
不知道这是为什么?
LuZhou 2002-07-01
  • 打赏
  • 举报
回复
改成不等于:!=
xiaofeng_cxy 2002-07-01
  • 打赏
  • 举报
回复
不知道'.'是不是指当前目录?
xiaofeng_cxy 2002-07-01
  • 打赏
  • 举报
回复
没有人吗?
我顶!!

5,928

社区成员

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

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