Copiar pasta usando SAVEDIALOG
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;
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
Curtidas 0