controlar avances en el copiado de archivos con vfp

1,259 views
Skip to first unread message

amaro

unread,
Jul 27, 2010, 2:19:47 PM7/27/10
to Comunidad de Visual Foxpro en Español
Hola lista, alguien conoce como lanzar una copia de archivos de
cualquier tipo y controlar su avance, como para poder mostrar una
barra de progreso.
Desde ya muchas gracias.

Hugo C.

unread,
Jul 27, 2010, 3:13:37 PM7/27/10
to Comunidad de Visual Foxpro en Español
Intenta con algo como esto

ADIR(laArchivos, "*.dbf" )
FOR x = 1 TO ALEN(laArchivos, 1) - 1
lcArchivo = laArchivos(x, 1)
lcDestino = "C:\Respaldo\" + lcArchivo
COPY FILE (lcArchivo) TO (lcDestino)
*::___ Actualizar Barra de progrreso
ActualizaBarra(x)
ENDFOR

Saludos.

Amaro Silva

unread,
Jul 27, 2010, 3:37:30 PM7/27/10
to publice...@googlegroups.com
Gracias por tu respuesta, pero para el caso en particular no es un un grupo de archivos, me exprese mal ya que es un solo archivo que por lo general pesa mas de 50mb es por eso que necesito mostrar un avance del copiado para hacerlo mas amigable al usuario.
Saludos.
--
Amaro Silva.

ZeRoberto

unread,
Jul 27, 2010, 6:38:10 PM7/27/10
to publice...@googlegroups.com
Existe una api que cuando copias te aparece el la ventana de copiado del mismo windows, dejame buscarlo y te lo envio. O quizas Luis Maria nos proporcione el codigo.
 
Saludos

Luis Mata

unread,
Jul 27, 2010, 6:38:26 PM7/27/10
to publice...@googlegroups.com
Yo tengo uno pero este descarga de un servidor x FTP, ahi se ve el progreso pero no creo que te sirca.
 
Luis

Hugo C.

unread,
Jul 27, 2010, 8:10:08 PM7/27/10
to Comunidad de Visual Foxpro en Español
Creo que el api es CopyFileEx :

El problema es el parametor lpProgressRoutine,
que se utiliza como una funcion callBack que no
se como se hace con foxpro.

Declare INTEGER CopyFileEx in win32api;
STRING lpExistingFileName,;
STRING lpNewFileName,;
LONG lpProgressRoutine,;
STRING lpData,;
INTEGER@ pbCancel,;
INTEGER dwCopyFlags;

Aqui esta un ejemplo pero con VB.

http://www.recursosvisualbasic.com.ar/htm/listado-api/65-copiar-archivo-progreso.htm

Saludos

On 27 jul, 16:38, ZeRoberto <zeroha...@gmail.com> wrote:
> Existe una api que cuando copias te aparece el la ventana de copiado del
> mismo windows, dejame buscarlo y te lo envio. O quizas Luis Maria nos
> proporcione el codigo.
>
> Saludos
>
> El 27 de julio de 2010 21:37, Amaro Silva <silvaam...@gmail.com> escribió:
>
>
>
> > Gracias por tu respuesta, pero para el caso en particular no es un un grupo
> > de archivos, me exprese mal ya que es un solo archivo que por lo general
> > pesa mas de 50mb es por eso que necesito mostrar un avance del copiado para
> > hacerlo mas amigable al usuario.
> > Saludos.
>
> > El 27 de julio de 2010 16:13, Hugo C. <hcchav...@gmail.com> escribió:
>
> > Intenta con algo como esto
>
> >> ADIR(laArchivos, "*.dbf" )
> >> FOR x = 1 TO ALEN(laArchivos, 1) - 1
> >>    lcArchivo = laArchivos(x, 1)
> >>    lcDestino = "C:\Respaldo\" + lcArchivo
> >>    COPY FILE (lcArchivo) TO (lcDestino)
> >>    *::___ Actualizar Barra de progrreso
> >>    ActualizaBarra(x)
> >> ENDFOR
>
> >> Saludos.
>
> >> On 27 jul, 12:19, amaro <silvaam...@gmail.com> wrote:
> >> > Hola lista, alguien conoce como lanzar una copia de archivos de
> >> > cualquier tipo y controlar su avance, como para poder mostrar una
> >> > barra de progreso.
> >> > Desde ya muchas gracias.
>
> > --
> > Amaro Silva.- Ocultar texto de la cita -
>
> - Mostrar texto de la cita -

Daniel Del Giudice

unread,
Jul 27, 2010, 8:13:39 PM7/27/10
to Comunidad de Visual Foxpro en Español
Creo que lo podrías hacer abriendo el archivo con fopen e ir leyendolo
y escribiéndolo por partes. El código que te muestro abajo es sólo una
referencia. No es mío y no recuerdo si lo saqué de Portalfox o me lo
dieron en el grupo anterior, pero funciona perfectamente para subir un
archivo a un sitio con una barra de progreso y es parte de una
aplicación que tengo funcionando. Deberás adaptarlo para escribir el
archivo localmente, pero este es el camino a seguir. Suerte!


lnlocal = fopen(o.archivo_local)
if lnlocal=-1
thisform.mensaje.caption = "¡No se pudo abrir archivo local!"
internetclosehandle(lnremote)
return .f.
endif
lnbuffersize = 1024
lnfilelength = fseek(lnlocal, 0, 2)
fseek(lnlocal, 0, 0)
lnuploaded = 0
do while lnuploaded<lnfilelength
lcbuffer = fread(lnlocal, lnbuffersize)
lnwritten = 0
internetwritefile(lnremote, lcbuffer, len(lcbuffer), @lnwritten)
lnuploaded = lnuploaded+len(lcbuffer)
thisform.mensaje.caption = "Enviando datos:
"+ltrim(str(lnuploaded*100/lnfilelength))+"%"
enddo
internetclosehandle(lnremote)
fclose(lnlocal)


Daniel Del Giudice
Santiago del Estero
Argentina

Walter R. Ojeda Valiente

unread,
Jul 27, 2010, 11:53:37 PM7/27/10
to publice...@googlegroups.com
En ese caso, lo abres como archivo binario, lo copias con otro nombre, lo cierras cuando terminó el copiado. En caso de ser necesario, lo puedes renombrar o borrar después de finalizada la copia.

Las funciones que debes utilizar son FOPEN(), FSEEK(), FREAD(), FWRITE(), FCLOSE()

Trata de hacer algunas pruebas, si no te sale, avisa.

Saludos.

Walter.





Gracias por tu respuesta, pero para el caso en particular no es un un grupo de archivos, me exprese mal ya que es un solo archivo que por lo general pesa mas de 50mb es por eso que necesito mostrar un avance del copiado para hacerlo mas amigable al usuario.
Saludos.


Your E-mail and More On-the-Go. Get Windows Live Hotmail Free. Sign up now.

ricardo peña

unread,
Jul 28, 2010, 8:38:17 AM7/28/10
to publice...@googlegroups.com

 Hola:
 
Yo uso la clase "barra de progreso" que la puedes descargar de www.portalfox.com
 
y en el programa hago:
 
SELECT xxxx
GO TOP
tt=RECCOUNT()
SCAN
 a=INT(RECNO()/tt*100) 
 THISFORM.barra1._grafica(a)
 THISFORM.REFRESH

  ...tu proceso
 
ENDSCAN
 
 
Ricardo Luis Peña
Analista de Sistemas
BA - Argentina


Porque tu vida necesita más espacio y comodidad. Muy pronto descubrí un nuevo Hotmail. Ver más

Humberto Díaz

unread,
Jul 28, 2010, 3:25:50 AM7/28/10
to publice...@googlegroups.com
Buenos días
 
Hace unos días, pedí ayuda al grupo para crear el instalador o "disco de distribución", desde el VFP-9, en el VFP-5, es sencillisimo, vas a asistentes, instalación y ......................., y ya esta hecho, pero al pasar mis trabajos a VFP-9, no encuentro como hacerlo, y realmente en el Help (ingles), la explicación que me da, creo que es muy trabajoso (al menos lo que yo entiendo), por eso le pedí al grupo que me ayudara a como crear mi CD de instalación pero desde el VFP-9, hoy vi un correo, donde sugerían el uso del InstalShield que viene en VFP-9, ya lo instale, pero en el listado de tipos de proyecto que permite abrir, no trae los proyectos de VFP-9.
Por favor ayúdenme, me urge resolver esto.
 
y necesito hacerlo desde VFP-9, ya que me es imposible adquirir ninguna herramienta
 
Gracias
 
Humberto Díaz
 


__________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 5283 (20100716) __________

ESET NOD32 Antivirus ha comprobado este mensaje.

http://www.eset.com

Luis Mata

unread,
Jul 28, 2010, 12:29:26 PM7/28/10
to publice...@googlegroups.com
Hola elige el primero Express Proyect o el diseñador de instalacion, sigue los pasos las librerias las adjuntas en redistributables en la ficha diseño de instalador

Luis Mata

unread,
Jul 28, 2010, 12:41:40 PM7/28/10
to publice...@googlegroups.com
Fijate en la pantalla imagen
 
 
Sent: Wednesday, July 28, 2010 12:25 AM
Subject: [vfp] para crear instalador
 
install.PNG

Luis Maria Guayan

unread,
Jul 28, 2010, 11:37:05 AM7/28/10
to publice...@googlegroups.com
Puede ser algo con VFPConnection de Craig Boyd
 
SET LIBRARY TO (LOCFILE("vfpconnection.fll","FLL"))
? FilePut("C:\Archivo_Grande.zip", "File://E:\Archivo_Grande", "MyFunc()")
SET LIBRARY TO
 
FUNCTION MyFunc()
  lnPorcentaje = nConnectBytesSoFar/nConnectTotalBytes*100
  WAIT WINDOW NOWAIT TRANSFORM(lnPorcentaje) + "%"
ENDFUNC
 
Para ver y descargar VFPConnection
 
 
 
Luis María Guayán
Tucumán, Argentina
_________________________
Nada corre como un zorro
_________________________ 

Humberto Díaz

unread,
Jul 28, 2010, 5:45:41 AM7/28/10
to publice...@googlegroups.com
Gracias Luis Mata, voy a probar

Amaro Silva

unread,
Jul 28, 2010, 2:05:06 PM7/28/10
to publice...@googlegroups.com
Muchas Gracias Luis Maria por el dato, es justo lo que necesito.
--
Amaro Silva.

Luis Maria Guayan

unread,
Jul 28, 2010, 3:08:08 PM7/28/10
to publice...@googlegroups.com
Este artículo te ayudará
 
-- Creando un programa Instalador de una aplicación de Visual FoxPro usando InstallShield Express --
 
 
Luis María Guayán
Tucumán, Argentina
_________________________
Nada corre como un zorro
_________________________ 


2010/7/28 Humberto Díaz <humb...@ctc.cu>

Hitiel Hernández

unread,
Jul 28, 2010, 6:23:07 PM7/28/10
to publice...@googlegroups.com
ok
yo creo que lo mejor sería que tu mismo desarrolles tu instalador y asi no andas con broncas
lo personalizas a tu gusto y nada mas. aparte que tienes las opciones para asegurarlo como quieras.

ERNESTO GUZMAN

unread,
Jul 29, 2010, 11:12:20 AM7/29/10
to publice...@googlegroups.com
Tambien en vfp6.0 esta verdaderamente sencillo. y bueno en mi caso emigré de 6.0 a 9.0 y lo unico que hago para ahorrarme la instalación es en cada pc que quiera instalar una aplicacion es registrar las dlls
foxhhelpps9.dll,gdiplus.dll,vfp9r.dll,vfp9rchs.dll,vfp9rcht.dll,vfp9rcsy.dll,vfp9rdeu.dll,vfp9renu.dll,vfp9resn.dll,vfp9rfra.dll,vfp9rkor.dll,vfprrus.dll y vfp9t.dll
y ya no necesito hacer mas solo copio el ejecutable de mi aplicacion y eso es todo.
 
 

Miguel Canchas

unread,
Jul 30, 2010, 12:51:50 PM7/30/10
to publice...@googlegroups.com
Probaste con el Inno Setup, es free y segun se, facil.
 
MK
 
----- Original Message -----
Sent: Wednesday, July 28, 2010 2:25 AM
Subject: [vfp] para crear instalador

Guillermo Carrero

unread,
Jul 30, 2010, 1:11:14 PM7/30/10
to Comunidad de Visual Foxpro en Español
Yo también utilizo Inno Setup. Este artículo me ayudo para iniciarme
http://www.davphantom.net/consultar.asp?id=crear-instalador-para-vfp-con-innosetup-1371/

Un saludo

Humberto Díaz

unread,
Jul 30, 2010, 7:17:20 AM7/30/10
to publice...@googlegroups.com
Muchas gracias, voy a probar todas las opciones que me han dado, vuelvo a repetir que este grupo es el mejor manual que tengo, aunque es cierto lo que dijo hace unos días, que primero nos rompamos un poco la cabeza y después pidamos ayuda, me dejo pensando realmente ese consejo.
 
Gracias
 
Humberto Díaz
 
Y por favor traten de detener la discusión, creo que no conduce a nada que no sea darle la razón a los que critican este grupo
 


__________ Información de ESET NOD32 Antivirus, versión de la base de firmas de virus 5323 (20100729) __________

Juan Bonilla

unread,
Jul 30, 2010, 3:07:51 PM7/30/10
to Comunidad de Visual Foxpro en Español
coincido con miguel, he usado el inno y funciona muy bien, incluso no
he tenido problemas ni con vista ni con win7
es mas hay una utileria que te ayuda a crear el codigo de instalacion,
archivos, registros, accesos directos, ect. se llama inno setup quick
start pack.

Mario López

unread,
Jul 30, 2010, 3:31:59 PM7/30/10
to Comunidad de Visual Foxpro en Español
Yo no había usado nunca InnoSetup hasta hace poco, y en un par de
horas pude armar
con el mismo un instalador que:

* Verifica los permisos en el usuario que va a instalar
* Instala mi programa
* Crea la estructura de directorios para el mismo
* Instala las DLLs de soporte en las carpetas correspondientes
* Instala automáticamente los paquetes de soporte en archivos de
Windows Installer (*.MSI)
* Crea y actualiza las claves de registro necesarias
* Crea el acceso directo al programa en el escritorio y en el menú
inicio
* no se me ocurrió nada más que agregarle :)

+1 a InnoSetup :)

Saludos,
Mario
Reply all
Reply to author
Forward
0 new messages