//==============================================================================
//拷贝目录(包括子目录一起拷贝)************************************************
//==============================================================================
procedure XCopyDir(SourceDir, TargetDir: string);
var DirInfo: TSearchRec;
    DosError: Integer;
begin
  DosError := FindFirst(SourceDir+'\*.*', FaAnyfile, DirInfo);
  if not DirectoryExists(TargetDir) then ForceDirectories(TargetDir);
  while DosError=0 do
  begin
    if ((DirInfo.Attr and FaDirectory)=faDirectory) and (DirInfo.Name<>'.') and (DirInfo.Name<>'..')
    then XCopyDir(SourceDir + '\' + DirInfo.Name, TargetDir + '\' + DirInfo.Name);
    {$IF DEFINED(WIN32) AND DECLARED(UsingVCL)}
    if ((DirInfo.Attr and FaDirectory)<>FaDirectory) and ((DirInfo.Attr and FaVolumeID)<>FaVolumeID)
    {$ELSE}
    if ((DirInfo.Attr and FaDirectory)<>FaDirectory)
    {$IFEND}
    then CopyFile(PChar(SourceDir + '\' + DirInfo.Name), PChar(TargetDir + '\' + DirInfo.Name), false);
    DosError := FindNext(DirInfo);
  end;
  SysUtils.FindClose(DirInfo);
end;

解决方案 »

  1.   

    //==============================================================================
    //删除目录(包括子目录一起删除)************************************************
    //==============================================================================
    procedure EraseDir(DirName:string);
    var DirInfo: TSearchRec;
        DosError: Integer;
    begin
      DosError := FindFirst(DirName+'\*.*', FaAnyfile, DirInfo);
      while DosError=0 do
      begin
        if ((DirInfo.Attr and FaDirectory)=faDirectory) and (DirInfo.Name<>'.') and (DirInfo.Name<>'..')
        then EraseDir(DirName + '\' + DirInfo.Name);
        {$IF DEFINED(WIN32) AND DECLARED(UsingVCL)}
        if ((DirInfo.Attr and FaDirectory)<>FaDirectory) and ((DirInfo.Attr and FaVolumeID)<>FaVolumeID)
        {$ELSE}
        if ((DirInfo.Attr and FaDirectory)<>FaDirectory)
        {$IFEND}
        then DeleteFile(pChar(DirName + '\' + DirInfo.Name));
        DosError := FindNext(DirInfo);
      end;
      SysUtils.FindClose(DirInfo);
      RemoveDirectory(PChar(DirName));
    end;
      

  2.   

    CopyFile(PChar(Filelistbox1.filename),PChar('c:\hpbf'),false);
    或CopyFile(PChar(Filelistbox1.filename),PChar('c:\hpbf'+filename),false);
    执行后无错误提示,但拷贝不过去。
      

  3.   

    用DELPHI提供的
    copyfile过程最方便
      

  4.   

    有个返回扩展名的函数,你看看能用它改吗,如果不需要用delphi实现在dos下用ren改也行啊。