【发布时间】:2016-07-02 14:57:26
【问题描述】:
我正在尝试使用目录中的所有文件夹名称填充字符串列表。
以下是我如何做到这一点的摘录:
var
SL: TStringList;
SearchAttr: LongInt;
SR: TSearchRec;
begin
SL := TStringList.Create;
try
SearchAttr := (faDirectory);
if FindFirst(Directory + '\*.', SearchAttr, SR) = 0 then
begin
try
repeat
if (SR.Attr and faDirectory) <> 0 then
begin
if (SR.Name <> '.') and (SR.Name <> '..') then
begin
SL.Add(Directory + SR.Name);
end;
end;
until
FindNext(Sr) <> 0;
finally
FindClose(SR);
end;
end;
end;
// do something with string list folder names
finally
SL.Free;
end;
end;
我正在访问的父文件夹包含 220 个子文件夹,但例程只添加了 216 个文件夹名称。经过一些比较和调试后,我注意到未添加的 4 个文件夹名称中包含点。
为了测试,我创建了一个名为“Test Folder”的文件夹,并在其中添加了 9 个新文件夹,名为:
- 文件夹 1
- 文件夹 2
- 文件夹 3
- 文件夹 4
- 文件夹 5
- 文件夹 .6
- 文件夹 7
- F.O.L.D.E.R 8
- 文件夹 9
使用“测试文件夹”作为父目录时,只添加以下子文件夹:
- 文件夹 1
- 文件夹 2
- 文件夹 3
- 文件夹 4
- 文件夹 5
- 文件夹 7
- 文件夹 9
我一直在尝试SR.Name <> '.'、SR.Name <> '..' 和SR.Name[1] <> '.' 等,但没有成功。
如何修改代码以允许名称中带有点的文件夹名称并将它们添加到我的字符串列表中?
谢谢
【问题讨论】:
-
感谢神秘的不赞成票,如果您觉得需要反对票,请至少给出一个理由。
-
我不明白反对意见。这是一个写得很好的问题,符合所有要求。
-
@KenWhite 谢谢,幸运的是我并不太关心我得到多少赞成或反对,我使用这个网站的主要目的是学习和成长为一名开发人员,并在可能的情况下帮助他人。当神秘用户自己对其他用户的问题投反对票时,我觉得这很烦人,甚至没有留下任何理由或任何建设性的东西。如果用户的问题不好,那么投票者至少应该给出一个合理的理由说明原因,并至少为该人提供一个编辑问题等的机会,而不是让他们思考他们做错了什么。
标签: delphi delphi-xe7