有一个目录名字叫2001,要将他连同目录里面的文件一起拷贝到同级目录下的2002(如果2002存在。提示覆盖。否则创建。)。要详细代码演示?

解决方案 »

  1.   

    Function CopyFileDirTo(aHandle: Integer;FileSoureDir,FileDestDir: String):Boolean;
    var
      OPStruct : TSHFileOpStruct;
      FromBuf,ToBuf : Array[0..128] of Char;
    begin
      FillChar(FromBuf,SizeOf(FromBuf),0);
      FillChar(ToBuf,SizeOf(ToBuf),0);
      StrPCopy(FromBuf,PChar(FileSoureDir));
      StrPCopy(ToBuf,PChar(FileDestDir));
      //设定结构体,以供文件操作
      with OPStruct do
      begin
        Wnd  := aHandle;
        wFunc := FO_Copy;
        pFrom := @FromBuf;
        pTo   := @ToBuf;
        fFlags:= FOF_NOCONFIRMATION +FOF_RENAMEONCOLLISION;
        fAnyOperationsAborted := False;
        hNameMappings := nil;
        lpszProgressTitle := nil;
      end; //with
      if SHFileOperation(OPStruct)<>0 then
         Result := False
      else
         Result := True;
    end;
    //应该够用了吧!
      

  2.   

    //==============================================================================
    //拷贝目录(包括子目录一起拷贝)************************************************
    //==============================================================================
    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;
      

  3.   

    shellapi.pas中间有,自己找找shell的api函数
      

  4.   

    dephi 自带了目录拷贝函数码?
      

  5.   

    function CopyDirectory(const Source, Dest: string): boolean;
    var
      fo: TSHFILEOPSTRUCT;
    begin
      FillChar(fo, SizeOf(fo), 0);
      with fo do
      begin
        Wnd := 0;
        wFunc := FO_COPY;
        pFrom := PChar(source+#0);
        pTo := PChar(Dest+#0);
        fFlags := FOF_NOCONFIRMATION+FOF_NOCONFIRMMKDIR    ;
      end;
      Result := (SHFileOperation(fo) = 0);
    end;
    切记在pFrom,pTo得后面要加两个NULL.
      

  6.   

    这种具体怎么用呀!加在哪里function CopyDirectory(const Source, Dest: string): boolean;
      

  7.   

    windows有一个api函数
    SHFileOperation
    他可以实现文件的拷贝,删除包括目录
    你可以看看msdn的帮助
    他有几个参数
    wfunc 需要干什么 fo_copy fo_delete fo_move
    pfrom 要拷贝的地方
    pto 要拷贝到的地方
    fflags 需要怎么运行这个拷贝删除和移动,比如简单的到回收站的提示就
    可以设置这个参数就可以了
      

  8.   

    值得注意的是文件的最后一个需要有2个Null来代表结束
    每个之间用1个Null
    pchar 是只有一个nUll