所在的文件是吧。
procedure SearchPath(const APath: string); //APath必须带'/'
var
  SR: TSearchRec;
begin
  if FindFirst(APath + '*.*', faAnyFile, SR) = 0 then
    repeat
      if (SR.Name <> '.') and (SR.Name <> '..') then
        ShowMessage(APath + SR.Name);
    until FindNext(SR) <> 0;
  FindClose(SR);
end;

解决方案 »

  1.   

    var
      vSearchRec: TSearchRec;
      vPathName: string;
      K: Integer;
    begin
      Result := True;
      vPathName := mDirName + '\*.*';
      K := FindFirst(vPathName, faAnyFile, vSearchRec);
    ......
      

  2.   

    ---- 1、拷贝目录 ---- 为了能拷贝目录下带有子目录的情况,先定义一个辅助的拷贝函数,它是递归执行的,直到把目录下的所有文件和子目录都拷贝完。 ---- 1.1拷贝目录的递归辅助函数:DoCopyDir function DoCopyDir(sDirName:String;
    sToDirName:String):Boolean;
    var
       hFindFile:Cardinal;
       t,tfile:String;
       sCurDir:String[255];
       FindFileData:WIN32_FIND_DATA;
    begin
       //先保存当前目录
       sCurDir:=GetCurrentDir;
       ChDir(sDirName);
       hFindFile:=FindFirstFile('*.*',FindFileData);
       if hFindFile< >INVALID_HANDLE_VALUE then
       begin
            if not DirectoryExists(sToDirName) then
               ForceDirectories(sToDirName);
            repeat
                  tfile:=FindFileData.cFileName;
                  if (tfile='.') or (tfile='..') then
                     Continue;
                  if FindFileData.dwFileAttributes=
                  FILE_ATTRIBUTE_DIRECTORY then
                  begin
                       t:=sToDirName+'\'+tfile;
                       if  not DirectoryExists(t) then
                           ForceDirectories(t);
                       if sDirName[Length(sDirName)]< >'\' then
                          DoCopyDir(sDirName+'\'+tfile,t)
                       else
                          DoCopyDir(sDirName+tfile,sToDirName+tfile);
                  end
                  else
                  begin
                       t:=sToDirName+'\'+tFile;
                       CopyFile(PChar(tfile),PChar(t),True);
                  end;
            until FindNextFile(hFindFile,FindFileData)=false;
            FindClose(hFindFile);
       end
       else
       begin
            ChDir(sCurDir);
            result:=false;
            exit;
       end;
       //回到原来的目录下
       ChDir(sCurDir);
       result:=true;
    end;---- 1.2拷贝目录的函数:CopyDir function CopyDir(sDirName:String;
    sToDirName:string):Boolean;
    begin
          if Length(sDirName)< =0 then
             exit;
          //拷贝...
          Result:=DoCopyDir(sDirName,sToDirName);
    end;---- 2、删除目录 ---- 删除目录与拷贝目录很类似,但为了能删除位于根目录下的一个空目录,需要在辅助函数中设置一个标志变量,即:如果删除的是空目录,则置bEmptyDir为True,这一句已经用深色框表示了。 ---- 2.1删除目录的递归辅助函数:DoRemoveDir function DoRemoveDir(sDirName:String):Boolean;
    var
       hFindFile:Cardinal;
       tfile:String;
       sCurDir:String;
       bEmptyDir:Boolean;
       FindFileData:WIN32_FIND_DATA;
    begin
       //如果删除的是空目录,则置bEmptyDir为True
       //初始时,bEmptyDir为True
       bEmptyDir:=True;
       //先保存当前目录
       sCurDir:=GetCurrentDir;
       SetLength(sCurDir,Length(sCurDir));
       ChDir(sDirName);
       hFindFile:=FindFirstFile('*.*',FindFileData);
       if hFindFile< >INVALID_HANDLE_VALUE then
       begin
            repeat
                  tfile:=FindFileData.cFileName;
                  if (tfile='.') or (tfile='..') then
                  begin
                     bEmptyDir:=bEmptyDir and True;
                     Continue;
                  end;
                  //不是空目录,置bEmptyDir为False
                  bEmptyDir:=False;
                  if FindFileData.dwFileAttributes=
                  FILE_ATTRIBUTE_DIRECTORY then
                  begin
                       if sDirName[Length(sDirName)]< >'\' then
                          DoRemoveDir(sDirName+'\'+tfile)
                       else
                          DoRemoveDir(sDirName+tfile);
                       if not RemoveDirectory(PChar(tfile)) then
                          result:=false
                       else
                          result:=true;
                  end
                  else
                  begin
                       if not DeleteFile(PChar(tfile)) then
                          result:=false
                       else
                          result:=true;
                  end;
            until FindNextFile(hFindFile,FindFileData)=false;
            FindClose(hFindFile);
       end
       else
       begin
            ChDir(sCurDir);
            result:=false;
            exit;
       end;
       //如果是空目录,则删除该空目录
       if bEmptyDir then
       begin
            //返回上一级目录
            ChDir('..');
            //删除空目录
            RemoveDirectory(PChar(sDirName));
       end;   //回到原来的目录下
       ChDir(sCurDir);
       result:=true;
    end;---- 2.2删除目录的函数:DeleteDir function DeleteDir(sDirName:String):Boolean;
    begin
          if Length(sDirName)< =0 then
             exit;
          //删除...
          Result:=DoRemoveDir(sDirName) and RemoveDir(sDirName);
    end;---- 3、移动目录 ---- 有了拷贝目录和删除目录的函数,移动目录就变得很简单,只需顺序调用前两个函数即可: function MoveDir(sDirName:String;
    sToDirName:string):Boolean;
    begin
         if CopyDir(sDirName,sToDirName) then
            if RemoveDir(sDirName) then
               result:=True
            else
               result:=false;
    end;///////////////////////////////////////////////
    procedure TForm1.Button2Click(Sender: TObject);
    var
      OpStruc: TSHFileOpStruct;
      frombuf, tobuf: Array [0..128] of Char;
    Begin
      FillChar( frombuf, Sizeof(frombuf), 0 );
      FillChar( tobuf, Sizeof(tobuf), 0 );
      StrPCopy( frombuf, 'd:\brief\*.*' );
      StrPCopy( tobuf, 'd:\temp\brief' );
      With OpStruc DO Begin
        Wnd:= Handle;
        wFunc:= FO_COPY;
        pFrom:= @frombuf;
        pTo:=@tobuf;
        fFlags:= FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION;
        fAnyOperationsAborted:= False;
        hNameMappings:= Nil;
        lpszProgressTitle:= Nil;  end;
      ShFileOperation( OpStruc );
    end;
      

  3.   

    ---- 1、拷贝目录 ---- 为了能拷贝目录下带有子目录的情况,先定义一个辅助的拷贝函数,它是递归执行的,直到把目录下的所有文件和子目录都拷贝完。 ---- 1.1拷贝目录的递归辅助函数:DoCopyDir function DoCopyDir(sDirName:String;
    sToDirName:String):Boolean;
    var
       hFindFile:Cardinal;
       t,tfile:String;
       sCurDir:String[255];
       FindFileData:WIN32_FIND_DATA;
    begin
       //先保存当前目录
       sCurDir:=GetCurrentDir;
       ChDir(sDirName);
       hFindFile:=FindFirstFile('*.*',FindFileData);
       if hFindFile< >INVALID_HANDLE_VALUE then
       begin
            if not DirectoryExists(sToDirName) then
               ForceDirectories(sToDirName);
            repeat
                  tfile:=FindFileData.cFileName;
                  if (tfile='.') or (tfile='..') then
                     Continue;
                  if FindFileData.dwFileAttributes=
                  FILE_ATTRIBUTE_DIRECTORY then
                  begin
                       t:=sToDirName+'\'+tfile;
                       if  not DirectoryExists(t) then
                           ForceDirectories(t);
                       if sDirName[Length(sDirName)]< >'\' then
                          DoCopyDir(sDirName+'\'+tfile,t)
                       else
                          DoCopyDir(sDirName+tfile,sToDirName+tfile);
                  end
                  else
                  begin
                       t:=sToDirName+'\'+tFile;
                       CopyFile(PChar(tfile),PChar(t),True);
                  end;
            until FindNextFile(hFindFile,FindFileData)=false;
            FindClose(hFindFile);
       end
       else
       begin
            ChDir(sCurDir);
            result:=false;
            exit;
       end;
       //回到原来的目录下
       ChDir(sCurDir);
       result:=true;
    end;---- 1.2拷贝目录的函数:CopyDir function CopyDir(sDirName:String;
    sToDirName:string):Boolean;
    begin
          if Length(sDirName)< =0 then
             exit;
          //拷贝...
          Result:=DoCopyDir(sDirName,sToDirName);
    end;---- 2、删除目录 ---- 删除目录与拷贝目录很类似,但为了能删除位于根目录下的一个空目录,需要在辅助函数中设置一个标志变量,即:如果删除的是空目录,则置bEmptyDir为True,这一句已经用深色框表示了。 ---- 2.1删除目录的递归辅助函数:DoRemoveDir function DoRemoveDir(sDirName:String):Boolean;
    var
       hFindFile:Cardinal;
       tfile:String;
       sCurDir:String;
       bEmptyDir:Boolean;
       FindFileData:WIN32_FIND_DATA;
    begin
       //如果删除的是空目录,则置bEmptyDir为True
       //初始时,bEmptyDir为True
       bEmptyDir:=True;
       //先保存当前目录
       sCurDir:=GetCurrentDir;
       SetLength(sCurDir,Length(sCurDir));
       ChDir(sDirName);
       hFindFile:=FindFirstFile('*.*',FindFileData);
       if hFindFile< >INVALID_HANDLE_VALUE then
       begin
            repeat
                  tfile:=FindFileData.cFileName;
                  if (tfile='.') or (tfile='..') then
                  begin
                     bEmptyDir:=bEmptyDir and True;
                     Continue;
                  end;
                  //不是空目录,置bEmptyDir为False
                  bEmptyDir:=False;
                  if FindFileData.dwFileAttributes=
                  FILE_ATTRIBUTE_DIRECTORY then
                  begin
                       if sDirName[Length(sDirName)]< >'\' then
                          DoRemoveDir(sDirName+'\'+tfile)
                       else
                          DoRemoveDir(sDirName+tfile);
                       if not RemoveDirectory(PChar(tfile)) then
                          result:=false
                       else
                          result:=true;
                  end
                  else
                  begin
                       if not DeleteFile(PChar(tfile)) then
                          result:=false
                       else
                          result:=true;
                  end;
            until FindNextFile(hFindFile,FindFileData)=false;
            FindClose(hFindFile);
       end
       else
       begin
            ChDir(sCurDir);
            result:=false;
            exit;
       end;
       //如果是空目录,则删除该空目录
       if bEmptyDir then
       begin
            //返回上一级目录
            ChDir('..');
            //删除空目录
            RemoveDirectory(PChar(sDirName));
       end;   //回到原来的目录下
       ChDir(sCurDir);
       result:=true;
    end;---- 2.2删除目录的函数:DeleteDir function DeleteDir(sDirName:String):Boolean;
    begin
          if Length(sDirName)< =0 then
             exit;
          //删除...
          Result:=DoRemoveDir(sDirName) and RemoveDir(sDirName);
    end;---- 3、移动目录 ---- 有了拷贝目录和删除目录的函数,移动目录就变得很简单,只需顺序调用前两个函数即可: function MoveDir(sDirName:String;
    sToDirName:string):Boolean;
    begin
         if CopyDir(sDirName,sToDirName) then
            if RemoveDir(sDirName) then
               result:=True
            else
               result:=false;
    end;///////////////////////////////////////////////
    procedure TForm1.Button2Click(Sender: TObject);
    var
      OpStruc: TSHFileOpStruct;
      frombuf, tobuf: Array [0..128] of Char;
    Begin
      FillChar( frombuf, Sizeof(frombuf), 0 );
      FillChar( tobuf, Sizeof(tobuf), 0 );
      StrPCopy( frombuf, 'd:\brief\*.*' );
      StrPCopy( tobuf, 'd:\temp\brief' );
      With OpStruc DO Begin
        Wnd:= Handle;
        wFunc:= FO_COPY;
        pFrom:= @frombuf;
        pTo:=@tobuf;
        fFlags:= FOF_NOCONFIRMATION or FOF_RENAMEONCOLLISION;
        fAnyOperationsAborted:= False;
        hNameMappings:= Nil;
        lpszProgressTitle:= Nil;  end;
      ShFileOperation( OpStruc );
    end;