PDA

Ver la Versión Completa : Copiar, mover y borrar una carpeta y todo su contenido


dec
07-06-2006, 20:34:51
Con las siguientes funciones podemos copiar, mover y borar carpetas y todo su contenido:


uses
ShlObj, Masks, ShellApi;

function CopiarCarpeta(const carpetaOrigen,
carpetaDestion: string) : boolean;
var
FileOp: TSHFileOpStruct;
begin
FillChar(FileOp, SizeOf(FileOp), #0);
with FileOp do
begin
wFunc := FO_COPY;
Wnd := GetDesktopWindow;
pTo := PChar(carpetaOrigen);
pFrom := PChar(carpetaDestion+#0#0);
fFlags := FOF_NOCONFIRMATION or
FOF_SILENT or FOF_ALLOWUNDO;
end;
Result := (ShFileOperation(FileOp) = 0);
end;

function MoverCarpeta(const carpetaOrigen,
carpetaDestion: string) : boolean;
var
FileOp: TSHFileOpStruct;
begin
FillChar(FileOp, SizeOf(FileOp), #0);
with FileOp do
begin
wFunc := FO_MOVE;
Wnd := GetDesktopWindow;
pTo := PChar(carpetaOrigen);
pFrom := PChar(carpetaDestion+#0#0);
fFlags := FOF_NOCONFIRMATION or
FOF_SILENT or FOF_ALLOWUNDO;
end;
Result := (ShFileOperation(FileOp) = 0);
end;

function BorrarCarpeta(const rutaCarpeta: string) : boolean;
var
FileOp: TSHFileOpStruct;
begin
FillChar(FileOp, SizeOf(FileOp), #0);
with FileOp do
begin
wFunc := FO_DELETE;
Wnd := GetDesktopWindow;
pFrom := PChar(rutaCarpeta+#0#0);
fFlags := FOF_NOCONFIRMATION or
FOF_SILENT or FOF_ALLOWUNDO;
end;
Result := (ShFileOperation(FileOp) = 0);
end;

René Luis
19-06-2006, 20:20:41
El código está muy bién, pero a la hora de copiar una carpeta y su contenido a un path con el mismo nombre, se demora mucho en sobreescribirla y además, debería tener un Progressbar que te indique si la copia se efectua o no.

Cañones
28-04-2010, 18:01:09
Hola. La verdad que entiendo poco lo que hace la función, pero en elgún punto puedo saber el tamaño de la carpeta?
Gracias.

juank1971
31-05-2011, 17:45:49
Hay un error en copiar estan invertidos pFrom Con pTo
donde dice en CopiarCarpeta
[DELPHI]
pTo := PChar(carpetaOrigen);
pFrom := PChar(carpetaDestion+#0#0);
[DELPHI]

debe decir
[DELPHI]
pFrom := PChar(carpetaOrigen);
pTo := PChar(carpetaDestion+#0#0);
[DELPHI]

ingabraham
30-05-2013, 23:06:04
muy buen codigo, felicitaciones, muy util.

jbecerra
01-04-2015, 19:39:15
Hola...como va? una consulta.. ¿que es "GetDesktopWindow"?

jhonny
01-04-2015, 20:33:46
Hola...como va? una consulta.. ¿que es "GetDesktopWindow"?

Simplemente es el código "Handle" del Desktop de Windows.