首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

新手请问一个小疑点

2012-03-04 
新手请教一个小问题procedureFindFiles(filename: Pchar)vara: _WIN32_FIND_DATAb: longinttemp: Strin

新手请教一个小问题
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;


[解决办法]
dwFileAttributes是文件属性,49,48,16代表该文件类型是目录或链接。
具体值含义如下: 
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));
调用自身是递归算法,目的是遍历子目录

热点排行