PDA

Ver la Versión Completa : Copiar Archivos


frankmch
24-07-2003, 21:02:15
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


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


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:

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
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 (http://www.clubdelphi.com/foros/guiaestilo.php), gracias.

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

macedo_mx
26-02-2014, 01:21:31
Buen Aporte !!!!