Copiando pastas e subpastas
pessoal estou utilizandu o seguinte codigo para copiar arquivos
porem este codigo copia apenas os arquivos de um determinado diretorio, alguem sabe como fazer para copiar as pastas e subpastas???
caso naum exita com esse alguel pode me dizer algum outro????????
obrigado pessoal!!!
begin if CheckBox1.State = cbChecked then I := FindFirst(Edit1.Text + ´*.*´, faAnyFile, SR); while I = 0 do begin if (SR.Attr and faDirectory) <> faDirectory then begin Origem1 := Edit1.Text + SR.Name; Destino := frm_config.Edit0.Text + SR.Name; if not CopyFile(PChar(Origem1), PChar(Destino), true) then ShowMessage(´Erro ao copiar arquivo´ + Origem1 + ´ o arquivo já existe´); end; I := FindNext(SR); end;
porem este codigo copia apenas os arquivos de um determinado diretorio, alguem sabe como fazer para copiar as pastas e subpastas???
caso naum exita com esse alguel pode me dizer algum outro????????
obrigado pessoal!!!
Klaveren
Curtidas 0
Melhor post
Kapak
13/04/2005
Se ajudar, vc pode copiar no padrão Windows:
uses ShellApi; var SH:SHFILEOPSTRUCT; begin FillChar(SH, SizeOf(SH), 0); SH.Wnd := Handle; SH.wFunc := FO_Copy; SH.pFrom := ´c:\Pasta Origem\*.*´+#0; SH.pTo := ´c:\Pasta Destino´+0; SH.fFlags := FOF_Allowundo; SHFileOperation(SH); end;
GOSTEI 1
Mais Respostas
Massuda
05/03/2005
Esta rotina lista arquivos em um diretório e seus subdiretórios. Adapte ela para suas necessidades:
procedure ListarArquivos(const Path: string; const Lista: TStrings); var Search: TSearchRec; Done: Boolean; begin Done := FindFirst(Path + ´\*.*´, faAnyFile, Search) <> 0; while not Done do begin if (Search.Attr and faDirectory) = faDirectory then begin if (Search.Name <> ´.´) and (Search.Name <> ´..´) then begin ListarArquivos(Path + ´\´ + Search.Name, Lista); end; end else begin Lista.Add(Path + ´\´ + Search.Name); end; Done := FindNext(Search) <> 0; end; end;
GOSTEI 0
Klaveren
05/03/2005
pessoal ve se alguem poderia me dar uma maunzinha...
no exemplo abaixo...
o que vem a ser este [b:6a48751529][color=red:6a48751529]ListarArquivos [/color:6a48751529][/b:6a48751529]e o [b:6a48751529][color=red:6a48751529]Lista[/color:6a48751529][/b:6a48751529] mais ao fim da linha
Se alguem poder me ajudar, ficarei grato!!!!!!!!
flw
no exemplo abaixo...
Código: procedure ListarArquivos(const Path: string; const Lista: TStrings); var Search: TSearchRec; Done: Boolean; begin Done := FindFirst(Path + ´\*.*´, faAnyFile, Search) <> 0; while not Done do begin if (Search.Attr and faDirectory) = faDirectory then begin if (Search.Name <> ´.´) and (Search.Name <> ´..´) then begin ListarArquivos(Path + ´\´ + Search.Name, Lista); end; end else begin Lista.Add(Path + ´\´ + Search.Name); end; Done := FindNext(Search) <> 0; end; end;
o que vem a ser este [b:6a48751529][color=red:6a48751529]ListarArquivos [/color:6a48751529][/b:6a48751529]e o [b:6a48751529][color=red:6a48751529]Lista[/color:6a48751529][/b:6a48751529] mais ao fim da linha
ListarArquivos(Path + ´\´ + Search.Name, Lista);
Se alguem poder me ajudar, ficarei grato!!!!!!!!
flw
GOSTEI 0
Massuda
05/03/2005
...o que vem a ser este [b:a02e41fe6f][color=red:a02e41fe6f]ListarArquivos [/color:a02e41fe6f][/b:a02e41fe6f]e o [b:a02e41fe6f][color=red:a02e41fe6f]Lista[/color:a02e41fe6f][/b:a02e41fe6f] mais ao fim da linha
A rotina é recursiva e serve para gerar uma lista de arquivos existentes em um diretório e seus subdiretórios.Adaptando ela para cópia de arquivos, ficaria algo assim (não testei)...
uses SysUtils, FileCtrl, ... procedure CopiarArquivos(De, Para: string); var Search: TSearchRec; Done: Boolean; begin IncludeTrailingBackslash(De); IncludeTrailingBackslash(Para); Done := FindFirst(De + ´*.*´, faAnyFile, Search) <> 0; while not Done do begin if (Search.Attr and faDirectory) = faDirectory then begin if (Search.Name <> ´.´) and (Search.Name <> ´..´) then begin ForceDirectories(Para + Search.Name); CopiarArquivos(De + Search.Name, Para + Search.Name); end; end else begin if not CopyFile(PChar(De + Search.Name), PChar(Para + Search.Name), True) then begin // trata erro na cópia end; end; Done := FindNext(Search) <> 0; end; end;
GOSTEI 0
Klaveren
05/03/2005
Pessoal vejam...
nesta linha da a seguinte mensagem de erro:
[b:0bc2d4478a][Warning] Unit1.pas(31): Symbol ´IncludeTrailingBackslash´ is specific to a platform[/b:0bc2d4478a]
alguem sabe o que issu quer dizer???
tks
TForm1.Button1Click(´c:\sisbkp\´ + Search.Name, ´c:\bkp\´ + Search.Name);
nesta linha da a seguinte mensagem de erro:
[b:0bc2d4478a][Warning] Unit1.pas(31): Symbol ´IncludeTrailingBackslash´ is specific to a platform[/b:0bc2d4478a]
alguem sabe o que issu quer dizer???
tks
GOSTEI 0
Klaveren
05/03/2005
up
GOSTEI 0
Klaveren
05/03/2005
help me!
please
please
GOSTEI 0
Eriene Stringhetta
05/03/2005
Funciona perfeitamente!
GOSTEI 0