Copiar pasta usando SAVEDIALOG

Delphi

03/07/2013

Estou usando o codigo abaixo para fazer backup de uma pasta com todo o seu conteudo (arquivos e subpastas) para o lugar escolhido pelo usuario atraves do um SAVEDIALOG. Fiz um teste copiando para um pen drive e funciona se a pasta não existe no pen drive, mas se a pasta Contas_TKS já existir no pen drive, não deleta ela e substitui pela pasta que está em C:\Contas_TKS. O que esta errado?

dlgsDialog := TSaveDialog.Create(nil);
dlgsDialog.Filter := 'Todos os arquivos (*.)|*.|' ;
dlgsdialog.FileName := 'Contas_TKS';
if dlgsDialog.Execute then
begin


Dire := ExtractFilePath(dlgsdialog.FileName) ;

if DirectoryExists(Dire) = TRUE then
BEGIN
ShellExecute(0, nil, PChar('cmd.exe'), PChar('/c rd /s /q "' + ExtractFilePath(dlgsdialog.FileName) + '"'), nil, SW_SHOWNORMAL);
END;


origem:= 'C:\Contas_TKS' ;
destino:= dlgsdialog.FileName ;

If (origem <> '') and ( destino <> '') then
begin
FillChar(Dados,SizeOf(Dados), 0);
with Dados do
begin
wFunc := FO_COPY;
pFrom := PChar(origem);
pTo := PChar(destino);
fFlags:= FOF_ALLOWUNDO or FOF_SIMPLEPROGRESS or FOF_NOCONFIRMATION;
end;
SHFileOperation(Dados);

end;
Luiz Carlos

Luiz Carlos

Curtidas 0
POSTAR