Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Copiar directorios completos (https://www.clubdelphi.com/foros/showthread.php?t=10964)

macu1975 02-06-2004 15:56:57

Copiar directorios completos
 
Hola.

Necesito copiar directorios completos y quiero saber si puedo evitar leerme cada uno de los archivos del directorio y copiarlos uno por uno.

Gracias

acertij022 02-06-2004 16:03:23

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
 //Incluye ShellApi 

  function CopiaTodo(Origen,Destino : String) :
  LongInt;
  var 
    F : TShFileOpStruct;
    sOrigen, sDestino : String;
  begin 
    Result := 0;
    sOrigen := Origen + #0;
    sDestino := Destino + #0;
 
    with F do 
    begin 
      Wnd   := Application.Handle;
      wFunc := FO_COPY;
      pFrom := @sOrigen[1];
      pTo   := @sDestino[1];
      fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION
    end; 
 
    Result := ShFileOperation(F);
end; 
 
begin 
  CopiaTodo('c:\Delphi6\*.*','c:\kk');
end;
Espero que te sirva

;)

macu1975 02-06-2004 16:54:46

Muchas gracias, me sirvió....

perrogrun 30-07-2004 17:06:46

Si alguien necesita más información sobre ShFileOpStructaquí está la documentación de M$

Novás 09-08-2004 19:39:44

Hola...

Veréis, he probado la función y me ocurre lo siguiente:

Copio los archivos de un cdrom a una ubicación en mi disco duro donde ya existe una versión antigua de los mismos... cuando intento usar esta función empieza sobreescribiéndolos hasta que me encuentro con que algunos de ellos está en uso y no me deja continuar...

He entrado en el link de perrogrun para ver la ayuda de microsoft pero no consigo encontrar algo que me resuelva el problema...

Alguien sabe como hacer para poder sobreescribir estos archivos sin tener que cerrar la aplicación que los está usando...

Muchas gracias

DarkByte 10-08-2004 01:09:05

Pues... si un archivo está en uso teorícamente no se puede... pero hay de virgerías en xp/2000 que ni te cuento, con decir que he cambiado el nombre a un proceso en ejecución...

Creo que lo mejor sería que probases con un try....except y avisases de que el archivo está en uso y no se pudo copiar... O si no, buscar el ejecutable asociado al programa, ver si está Ejecutandose (no uses el truco de trucomanía pues siempre te va a devolver True...a mi al menos me pasa eso) y si se está ejecutandose avisa y lo asesinas (entiendase cerrar).

Es una sugerencia... ahora puedes hacerlo como quieras ;)

Thoronluin 13-09-2011 14:23:41

Hola:

Una pregunta. Si uso el código arriba expuesto en una aplicación de consola ¿Cómo puedo obtener el controlador/manejador? diretamente:
Código Delphi [-]
 Application.Handle
no me serviría ¿Sería así?
Código Delphi [-]
 GetStdHandle(STD_INPUT_HANDLE)
Saludos y gracias.

escafandra 13-09-2011 22:00:09

Código Delphi [-]
 with F do 
    begin 
      Wnd:= 0;
      .....................

Saludos.

Thoronluin 14-09-2011 10:58:53

Muchas gracias escafandra.

Saludos.

koalasoft 27-12-2011 23:32:29

Cita:

Empezado por acertij022 (Mensaje 48104)
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
 //Incluye ShellApi 

  function CopiaTodo(Origen,Destino : String) :
  LongInt;
  var 
    F : TShFileOpStruct;
    sOrigen, sDestino : String;
  begin 
    Result := 0;
    sOrigen := Origen + #0;
    sDestino := Destino + #0;
 
    with F do 
    begin 
      Wnd   := Application.Handle;
      wFunc := FO_COPY;
      pFrom := @sOrigen[1];
      pTo   := @sDestino[1];
      fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION
    end; 
 
    Result := ShFileOperation(F);
end; 
 
begin 
  CopiaTodo('c:\Delphi6\*.*','c:\kk');
end;
Espero que te sirva

;)


Cómo se le podría implementar la barra de progreso como este ejemplo: http://www.clubdelphi.com/trucos/ind...ll=0&scrollb=0

Ahora en tu ejemplo que tienes aqui?

Saludos !! :D


La franja horaria es GMT +2. Ahora son las 13:01:48.

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