Procedure Manipula Arquivo

procedure Tf_RE.ManipulaArquivo(Acao,Origem,DirDestino: String);
var
  Param: TSHFileOpStruct;
begin
  if not DirectoryExists(DirDestino) then begin
     ForceDirectories(DirDestino);
  end;
  with Param do
  begin
    if UpperCase(Acao) = 'COPY'   then wFunc  := FO_COPY;
    if UpperCase(Acao) = 'MOVE'   then wFunc  := FO_MOVE;
    if UpperCase(Acao) = 'RENAME' then wFunc  := FO_RENAME;
    if UpperCase(Acao) = 'DELETE' then wFunc  := FO_DELETE;
    pFrom  := pChar(Origem);
    pTo    := pChar(DirDestino);
    fFlags := FOF_ALLOWUNDO;
  end;
  if SHFileOperation(Param) <> 0 then begin
     Showmessage('Não foi possível executar a função ' + Acao + #13 +
                 'Origem: ' + Origem + #13 +
                 'Destino: ' + DirDestino);
     abort;
  end;
end;