Cita:
¿Es posible evitar el mensaje que genera Windows señalando que la carpeta no existe y preguntando si deseo crearla, cada vez que utilizo dicho código?
|
Hola radenf.
Supongo que así tendría que funcionarte:
Código Delphi
[-]
...
uses ShellApi;
procedure SHFileCopy(hWndOwner: HWND; const SourceFile, TargetFile: string);
var
SHFileOpStruct: TSHFileOpStruct;
Aborted : Bool;
begin
Aborted := False;
with SHFileOpStruct do
begin
Wnd := hWndOwner;
wFunc := FO_COPY;
pFrom := PChar(SourceFile);
pTo := PChar(TargetFile);
fFlags := FOF_NOCONFIRMMKDIR + FOF_SILENT;
fAnyOperationsAborted := Aborted;
end;
try
SHFileOperation(SHFileOpStruct);
except
raise Exception.Create('Error copiando la carpeta');
end;
end;
Llamada:
Código Delphi
[-]
var
Origen, Destino: string;
begin
...
Destino:= MakePath(Edit2, Date,(Edit4.Text));
Origen := ExcludeTrailingPathDelimiter(Directory(OpenDialog1.Directory));
SHFileCopy(Handle, Origen, Destino);
...
end;
No conozco el componente
SelectDirectoryDialog y no puedo probar si devuelve un valor finalizado con delimitador. Tal vez sea innecesario el uso de la funcion
ExcludeTrailingPathDelimiter.
Saludos.
Edito: Hay un error en esta línea:
Código Delphi
[-]Origen := ExcludeTrailingPathDelimiter(Directory(OpenDialog1.Directory));
Era:
Código Delphi
[-]Origen := ExcludeTrailingPathDelimiter(ExtractFilePath(OpenDialog1.FileName));
Disculpas