Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-06-2004
macu1975 macu1975 is offline
Miembro
 
Registrado: may 2004
Ubicación: Neuquen
Posts: 15
Poder: 0
macu1975 Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 02-06-2004
Avatar de acertij022
acertij022 acertij022 is offline
Miembro
 
Registrado: may 2003
Ubicación: Argentina-Bs. As.
Posts: 233
Poder: 21
acertij022 Va por buen camino
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

Responder Con Cita
  #3  
Antiguo 02-06-2004
macu1975 macu1975 is offline
Miembro
 
Registrado: may 2004
Ubicación: Neuquen
Posts: 15
Poder: 0
macu1975 Va por buen camino
Muchas gracias, me sirvió....
Responder Con Cita
  #4  
Antiguo 30-07-2004
perrogrun perrogrun is offline
Miembro
 
Registrado: ene 2004
Ubicación: Fuengirola
Posts: 41
Poder: 0
perrogrun Va por buen camino
Si alguien necesita más información sobre ShFileOpStructaquí está la documentación de M$
Responder Con Cita
  #5  
Antiguo 09-08-2004
Novás Novás is offline
Miembro
 
Registrado: oct 2003
Ubicación: Galicia
Posts: 146
Poder: 21
Novás Va por buen camino
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
__________________
Hay dos cosas infinitas: el Universo y la estupidez humana. http://www.cybertarjetas.net
Responder Con Cita
  #6  
Antiguo 10-08-2004
Avatar de DarkByte
DarkByte DarkByte is offline
Miembro
 
Registrado: sep 2003
Ubicación: Desconocido
Posts: 1.322
Poder: 22
DarkByte Va por buen camino
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
__________________
:)
Responder Con Cita
  #7  
Antiguo 13-09-2011
Thoronluin Thoronluin is offline
Miembro
 
Registrado: feb 2009
Posts: 39
Poder: 0
Thoronluin Va por buen camino
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.
Responder Con Cita
  #8  
Antiguo 13-09-2011
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Código Delphi [-]
 with F do 
    begin 
      Wnd:= 0;
      .....................

Saludos.
Responder Con Cita
  #9  
Antiguo 14-09-2011
Thoronluin Thoronluin is offline
Miembro
 
Registrado: feb 2009
Posts: 39
Poder: 0
Thoronluin Va por buen camino
Muchas gracias escafandra.

Saludos.
Responder Con Cita
  #10  
Antiguo 27-12-2011
koalasoft koalasoft is offline
Miembro
 
Registrado: oct 2004
Ubicación: Tenosique Tabasco
Posts: 86
Poder: 20
koalasoft Va por buen camino
Cita:
Empezado por acertij022 Ver Mensaje
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 !!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 13:59:35.


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
Copyright 1996-2007 Club Delphi