Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Trucos (https://www.clubdelphi.com/foros/forumdisplay.php?f=52)
-   -   Copiar, mover y borrar una carpeta y todo su contenido (https://www.clubdelphi.com/foros/showthread.php?t=80411)

dec 07-06-2006 20:34:51

Copiar, mover y borrar una carpeta y todo su contenido
 
Con las siguientes funciones podemos copiar, mover y borar carpetas y todo su contenido:

Código Delphi [-]
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

Cita:

Empezado por jbecerra (Mensaje 490762)
Hola...como va? una consulta.. ¿que es "GetDesktopWindow"?

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


La franja horaria es GMT +2. Ahora son las 03:21:03.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi