procedure FindFiles(filename: Pchar);
var
a: _WIN32_FIND_DATA;
b: longint;
temp: String;
begin
temp := filename;
b := FindFirstFile(Pchar(Filename +'\*.*'),a);
if (Trim(a.cFileName)<> '.')and(Trim(a.cFileName)<>'..')and(Trim(a.cFileName)<>'') then
begin
if Trim(a.cFileName) = Trim(Form1.Edit2.Text) then
begin
Inc(Form1.FileCount);
Form1.Memo1.Lines.Add(temp+'\'+a.cFileName);
end;
end;
while FindNextFile(b,a) = True do
begin
if (Trim(a.cFileName)<>'.')and(Trim(a.cFileName)<> '..')and(Trim(a.cFileName)<> '') then
begin
if Trim(a.cFileName) = Trim(Form1.Edit2.Text) then
begin
Inc(Form1.FileCount);
Form1.Memo1.Lines.Add(temp+'\'+a.cFileName);
end;
end;
if ((a.dwFileAttributes=49)or(a.dwFileAttributes=48)or(a.dwFileAttributes=16))and(Trim(a.cFileName)<> '.')and(Trim(a.cFileName)<> '..') then//请问dwFileAttributes有什么作用?
begin
FindFiles(pchar(Trim(temp)+'\'+a.cFileName));//这里为什么调用自身?
end;
end;
end;
var
a: _WIN32_FIND_DATA;
b: longint;
temp: String;
begin
temp := filename;
b := FindFirstFile(Pchar(Filename +'\*.*'),a);
if (Trim(a.cFileName)<> '.')and(Trim(a.cFileName)<>'..')and(Trim(a.cFileName)<>'') then
begin
if Trim(a.cFileName) = Trim(Form1.Edit2.Text) then
begin
Inc(Form1.FileCount);
Form1.Memo1.Lines.Add(temp+'\'+a.cFileName);
end;
end;
while FindNextFile(b,a) = True do
begin
if (Trim(a.cFileName)<>'.')and(Trim(a.cFileName)<> '..')and(Trim(a.cFileName)<> '') then
begin
if Trim(a.cFileName) = Trim(Form1.Edit2.Text) then
begin
Inc(Form1.FileCount);
Form1.Memo1.Lines.Add(temp+'\'+a.cFileName);
end;
end;
if ((a.dwFileAttributes=49)or(a.dwFileAttributes=48)or(a.dwFileAttributes=16))and(Trim(a.cFileName)<> '.')and(Trim(a.cFileName)<> '..') then//请问dwFileAttributes有什么作用?
begin
FindFiles(pchar(Trim(temp)+'\'+a.cFileName));//这里为什么调用自身?
end;
end;
end;
具体值含义如下:
FILE_ATTRIBUTE_READONLY = $00000001;
{$EXTERNALSYM FILE_ATTRIBUTE_READONLY}
FILE_ATTRIBUTE_HIDDEN = $00000002;
{$EXTERNALSYM FILE_ATTRIBUTE_HIDDEN}
FILE_ATTRIBUTE_SYSTEM = $00000004;
{$EXTERNALSYM FILE_ATTRIBUTE_SYSTEM}
FILE_ATTRIBUTE_DIRECTORY = $00000010;
{$EXTERNALSYM FILE_ATTRIBUTE_DIRECTORY}
FILE_ATTRIBUTE_ARCHIVE = $00000020;
{$EXTERNALSYM FILE_ATTRIBUTE_ARCHIVE}
FILE_ATTRIBUTE_NORMAL = $00000080;
{$EXTERNALSYM FILE_ATTRIBUTE_NORMAL}
FILE_ATTRIBUTE_TEMPORARY = $00000100;
{$EXTERNALSYM FILE_ATTRIBUTE_TEMPORARY}
FILE_ATTRIBUTE_COMPRESSED = $00000800;
{$EXTERNALSYM FILE_ATTRIBUTE_COMPRESSED}
FindFiles(pchar(Trim(temp)+'\'+a.cFileName));
调用自身是递归算法,目的是遍历子目录