小弟刚学DELPHI ,用delphi 写文件夹的拷贝,如把C:\temp整个文件夹和里面的子文件件夹文件全拷贝到D:\temp下,并且可以覆盖D:\temp里的同名文件夹和文件,新的文件也要拷贝到D:\temp下

解决方案 »

  1.   

    Function Copy_Dir(SourceDir,DestDir:String;nLx:Integer):Boolean;
      Var
        Opstruc: TshFileOpStruct;
        frombuf,tobuf: Array[0..128] of Char;
      begin
        FillChar(frombuf,Sizeof(frombuf),0);
        FillChar(tobuf,Sizeof(tobuf),0);
        StrPcopy(frombuf,SourceDir);
        Case nLx of
             1:
               StrPcopy(tobuf,DestDir);
        end;
        With Opstruc Do
        Begin
             Wnd:=0;
             Case nLx of
                 1: wFunc:=FO_COPY;
                 2: wFunc:=FO_DELETE;
                 Else wFunc:=FO_COPY;
             end;
             pFrom:=@frombuf;
             pTo:=@tobuf;
             fFlags:=FOF_NOCONFIRMATION;
             fAnyOperationsAborted:=False;
             hNameMappings:=Nil;
             lpszProgressTitle:=Nil;
        end;
        try
             ShFileOperation(OpStruc);
             Result:=True;
        except
             Result:=False;
        end;
      end;
      

  2.   

    Function Copy_Dir(SourceDir,DestDir:String;nLx:Integer):Boolean;
      Var
        Opstruc: TshFileOpStruct;
        frombuf,tobuf: Array[0..128] of Char;
      begin
        FillChar(frombuf,Sizeof(frombuf),0);
        FillChar(tobuf,Sizeof(tobuf),0);
        StrPcopy(frombuf,SourceDir);
        Case nLx of
             1:
               StrPcopy(tobuf,DestDir);
        end;
        With Opstruc Do
        Begin
             Wnd:=0;
             Case nLx of
                 1: wFunc:=FO_COPY;
                 2: wFunc:=FO_DELETE;
                 Else wFunc:=FO_COPY;
             end;
             pFrom:=@frombuf;
             pTo:=@tobuf;
             fFlags:=FOF_NOCONFIRMATION;
             fAnyOperationsAborted:=False;
             hNameMappings:=Nil;
             lpszProgressTitle:=Nil;
        end;
        try
             ShFileOperation(OpStruc);
             Result:=True;
        except
             Result:=False;
        end;
      end;
      

  3.   

    uses
      shellapi;
    ///////
    Copy_Dir('c:\aa','d:\',1 );
      

  4.   

    Function Copy_Dir(SourceDir,DestDir:String;nLx:Integer):BooleannLx 是干什么 用的
      

  5.   

    Case nLx of
    1: wFunc:=FO_COPY;//拷贝
    2: wFunc:=FO_DELETE;//删除
    Else wFunc:=FO_COPY;
    end;
      

  6.   

    最近在学DELPHI,正好碰到这个问题,看到这帖子,太好了,谢谢。