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 Archivos (https://www.clubdelphi.com/foros/showthread.php?t=2474)

frankmch 24-07-2003 21:02:15

Copiar Archivos
 
Hola a todos.
De ante mano gracias por la ayuda que me puedan ofrecer.

esta ves necesito realizar copias de carpetas (folders), desde un destino digamos c:\micarpeta hasta otro destino d:\micarpeta.
claro esta que todo el contenido de estas carpetas tambien debe de copiarse.
no puedo utilizar archivos *.bat por razones de seguridad.
debo hacer esto desde mi aplicacion.
me vendria muy bien utilizar la api de windows que realiza esta funcion.
aunque cualquier sugerencia es buena.

gracias

jachguate 25-07-2003 02:26:46

Busca en la ayuda sobre el tipo TRegister, las funciones FindFirst y FindNext.

(no los metodos de TBDEDataSet, por supuesto).

Hasta luego.

;)

frankmch 25-07-2003 06:53:02

Oye amigo, gracias por el dato, aunque no lo use me sirvio de referencia para mi busqueda en las ayudas, a fin de cuentas logre con un poco de ayuda de otras fuentes desarrollar este codigo.

Usaremos la funcion API ShFileOperation. Mirate la ayuda de dicha función, ya que permite varias opciones tal como no mostrar el progreso de la
copia, permitir o no UNDO, etc...

-Incluye ShellApi en el uses de tu form

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
 
  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:\directorio\*.*','c:\directorio2');
end;

gracias por tu ayuda...

david duarte 23-10-2006 23:38:44

Hola a todos!!!

aqui de nuevo,

me gustaria que cuando copio un archivo de un lugar a otro, me apareciera la ventanita de progreso de copiado.

Anexo codigo de como copio el archivo

Código Delphi [-]
copiar := CopyFile(Pchar('c:\Microcredito\SourceT\Microcredito.exe'),Pchar('\\'+compudest+'\Microcredito\prueb  a_.exe'), FALSE);
      if copiar = False then
      Begin
        memo1.Lines.Add('*****************************************');
        memo1.Lines.Add('*******  ERROR AL COPIAR EL ARCHIVO  ****');
        memo1.Lines.Add('*********       VERIFIQUE    ************');
      end
      else
      Begin
        fintrans := Time;
        label3.Caption := TimeToStr(Now);
        inistr := TimeToStr(iniciotrans);
        finstr := TimeToStr(fintrans);
        memo1.Lines.Add('Archivo copiado a: '+stringgrid1.Cells[0,cont] +' Inicio ' +inistr + ' Fin '+finstr);
        showmessage ('Archivo copiado satisfactoriamente a la compu: '+compudest);
      end;

si alguien sabe alguna opcion, se los agradeceria, ya que al momento de querer copiar de una direccion ip a otra, a veces se tarda y no se si realmente esta copiando o se quedo trabada.

Muchas Gracias.

Saludos!!!

seoane 23-10-2006 23:54:58

Utiliza algo como esto:
Código Delphi [-]
uses ShellApi;

var
  FOS: SHFILEOPSTRUCT;
begin
  FillChar(FOS,Sizeof(FOS),0);
  with FOS do
  begin
    wFunc:= FO_COPY;
    pFrom:= PChar('d:\1.wmv'+#0);
    pTo:= Pchar('d:\2.wmv'+#0);
  end;
  SHFileOperation(FOS);
end;

david duarte 23-10-2006 23:57:41

Hola!!!

Ya logre que me saliera la ventanita de copiando
Tome el codigo de frankmch y lo adapte y ya me funcionó.

De todos modos muchas gracias.

david duarte 27-10-2006 22:00:36

Hola a todos, ahora me surge una pregunta o cuestion.

Como se si realmente se copió el archivo.

Necesito poner en un memo, a donde se copio el archivo y si se copio correctamente o no.
Lo que pasa es que necesito hacer un proceso que se va a ejecutar cada cierto tiempo, pero aproximadamente a las 2 o 3 de la mañana, por lo tanto, nadie va a estar en la oficina y se va a dar cuenta si se copio o no, hasta el dia siguiente.

Que pasaría si yo me voy a la casa tranquilamente y regreso al dia siguiente y me encuentro con la noticia de que marco error en la primera copia a realizar(ya sea porque la computadora estaba apagada, no estaba conectada a la red, la sesion estaba cerrada, etc), tendria que volver a correr el proceso manualmente, y eso seria fatal para la empresa donde estoy trabajando.

Entonces simplemente quiero saber como puedo saber si se copio o no el archivo y si se copio correctamente, poner la direccion ip en un memo y la palabra ok delante de esta.

Si alguien tiene alguna idea, se aceptan.

Muchas Gracias
Saludos!!!

suseLinux 01-02-2007 23:34:25

Excelente Aporte.. Gracias

ergonickolas 28-08-2011 22:49:52

me podrias pasar el codigo
 
hola frankmch, soy nuevo, pero estaba justo buscando una funcion que sirviera para poder crear backup de archivos pero no he podido hacerlo funcionar.me podrias pasar el codigo completo, porfa lo necesito es que estoy haciendo un programa para mi escuela, y no puedo terminarlo. desde ya muchas gracias

Casimiro Notevi 29-08-2011 00:34:41

Bienvenido a clubdelphi, ergonickolas, te recomiendo que leas nuestra guía de estilo, gracias.

Por cierto, si te fijas, ese mensaje es de 2003 ;)

macedo_mx 26-02-2014 01:21:31

Buen Aporte !!!!


La franja horaria es GMT +2. Ahora son las 08:34:36.

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