//根据当前目录获取本地的文件和目录信息
procedure GetChildFilesInfo(pPath: PAnsiChar);
var
  FirstHandle: THandle;
  InvalidHandleNo: Integer;
  FIleCount:Integer;
  DirCount:Integer;
  IsExist: LongBool;
begin
  InvalidHandleNo := 0;
  FirstHandle := 0;
  StrCat(pPath, '*');
  ZeroMemory(@gFindData, SizeOf(WIN32_FIND_DATA));
  begin
    FirstHandle := FindFirstFile(pPath, gFindData);
    if FirstHandle = INVALID_HANDLE_VALUE then
       showmessage('无效句柄')
    else
    begin
        //同下
      if gFindData.dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY then
      //如果是目录,记录
      begin
        StrLCopy(PChar(@DataFilesResult[i].DataFilePath), PChar(@gFindData.cFileName), MAX_PATH);
        Inc(DirCount);
      end
      else
      //如果是文件,详细记录
      begin
        StrLCopy(PChar(@DataFilesResult[i].DataFilePath), PChar(@gFindData.cFileName), MAX_PATH);
        Inc(FileCount);
      end
    end;
    while True do
    begin
      IsExist := FindNextFile(FirstHandle, gFindData);
      if IsExist = False then
        Break
      else
      begin
        begin
//注意此处,gFindData.dwFileAttributes的值,出现过16,22,32。
//据windows下的定义,不会出现22才对。只能是2的n此方。。一直郁闷
//求高人帮忙,或者大家看代码那块不对。
          if gFindData.dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY then
      //如果是目录,记录
          begin
            StrLCopy(PChar(@DataFilesResult[i].DataFilePath), PChar(@gFindData.cFileName), MAX_PATH);
            Inc(DirCount);
          end
          else
      //如果是文件,记录
          begin
            StrLCopy(PChar(@DataFilesResult[i].DataFilePath), PChar(@gFindData.cFileName), MAX_PATH);
            Inc(FileCount);
          end
        end;
      end
    end;
  end
end;
//如果是代码问题,请问大家,怎么修改。
//或者大家有自己的实现的好方法