Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-07-2005
quake2420 quake2420 is offline
Miembro
 
Registrado: abr 2004
Posts: 28
Poder: 0
quake2420 Va por buen camino
Problemas con la llamada a winexec

Hola compañeros del foro, mi duda es la siguiente:
Estoy haciendo un programa y lo que quiero es cada vez que guardo unos datos me guardo en la carpeta donde guardo esos datos un archivo .zip.
Como lo tengo hecho ahora lo que hago primeo es copiar todos los archivos a comprimir a la carpeta donde esta el ejecutable del 7zip, una vez copiados los archivos a esa carpeta, lo que hago es ejecutar el winexec que lo que hace es cargarme un archivo .bat, el cual, lo que hace es situarme en el directorio donde esta el ejecutable del zip y luego crearme el zip, una vez que he ejecutado el winexec, ejecuto un sleep para que no tenga problemas de ejecucion.
El problema es que la primera vez que ejecuto el programa la llamada winexec no hace nada pero las restantes veces que lo ejecuto lo hace sin problema:
Las lineas que tengo en el programa son las siguientes:
Código:
	
rutaT:=directorio + '\';
//Creacion del archivo zip donde se guarda
//los archivos wpa, xml y dtd
copyfile(PChar(rutaT + 'contenido.xml'),
PChar(rutazp + 'contenido.xml'),existe);
copyfile(PChar(rutaT + 'estilo.xml'),
PChar(rutazp + 'estilo.xml'),existe);
copyfile(PChar(rutaT + 'nuevo.dtd'),
PChar(rutazp + 'nuevo.dtd'),existe);
copyfile(PChar(rutaT + nombreA + '.wpa'),
PChar(rutazp + nombreA + '.wpa'),existe);
rutazp1:='"'+rutazp+'"';
zipf:=nombreA + '.wzp';
wpaf:=nombreA+'.wpa';
diractual:=SetCurrentDir(rutazp);
winexec(Pchar('crearzip.bat ' + rutazp1 + ' ' + zipf + ' '
+ wpaf),SW_hide);
sleep(1000);
copyfile(PChar(rutazp + zipf),PChar(rutaT + '\' + zipf),existe);
deletefile(PChar(rutazp + 'contenido.xml'));
deletefile(PChar(rutazp + 'estilo.xml'));
deletefile(PChar(rutazp + 'nuevo.dtd'));
deletefile(PChar(rutazp + wpaf));
deletefile(PChar(rutazp + zipf));


Gracias a todos por adelantado

Última edición por quake2420 fecha: 18-07-2005 a las 12:22:24.
Responder Con Cita
  #2  
Antiguo 18-07-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Por favor, embebe el código Delphi dentro de las etiquetas correspondientes. El no hacerlo ha provocado que yo te plantee algo que no tiene nada que ver con la pregunta que has formulado: ¿Porqué no utilizas unos componentes como los TurboPower Abbrevia (1) para comprimir los archivos que te sean menester?

Hay más componentes para realizar esa misma tarea, empero, te digo que pruebas los susomentados porque a mí me van de miedo, lógicamente, y porque en unas cuantas líneas de código tienes tu problema resulto de una forma mucho más elegante que usando un programa "de terceros", como haces o quieres hacer ahora.

1. Estos componentes son gratuitos y de "código abierto".

Actualización: Abajo puede verse cómo comprimir en un archivo Zip los archivos de una determinada carpeta, haciendo uso de uno de los componentes incluidos en el paquete TurboPower Abbrevia:

Código Delphi [-]
 procedure TForm1.Button1Click(Sender: TObject);
 var
   zip: TAbZipKit; // TurboPower Abbrevia
 begin
   zip := TAbZipKit.Create(Self);
   zip.FileName := 'C:\archivo.zip';
   zip.AddFiles('C:\archivos\*.*', faAnyFile);
   zip.Save;
   zip.Free;
 end;
Evidentemente el componente "TAbZipKit" da mucho más de sí, siendo posible fijar determinadas opciones que en el ejemplo de más arriba, sin embargo, no se ha visto necesario emplear.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 18-07-2005 a las 11:49:54. Razón: (actualización)
Responder Con Cita
  #3  
Antiguo 18-07-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is online now
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Cita:
Empezado por quake2420
...una vez que he ejecutado el winexec, ejecuto un sleep para que no tenga problemas de ejecucion...
¿Porqué crees que el Sleep te salvará de problemas?
Leete este hilo: http://www.clubdelphi.com/foros/showthread.php?t=23424
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
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 17:53:02.


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