Ver la Versión Completa : Problemas con el ZIP Y EL UNZIP para backups
BuRtOn
23-09-2008, 05:54:59
Saludos amigos, lo que sucede es que tengo este codigo, y no me funciona, antes si, no se que le movio mi amigo y no me comprimie el backup de mi bd...utilizo el unzip.exe y zip.exe, este es el codigo que tengo:
Ojo: la ubicación de mi aplicacion es la siguiente:
C:\Archivos de programa\Giros
dentro de Giros esta la carpeta de Backup fotosclientes y Backupbd, se que antes me generaba el mismo error y se que es por un espacio, pero no recuerdo en que parte va.
Boton de Comprimir:
procedure TfrmBackup.ComprimirClick(Sender: TObject);
begin
FileRun1.Directory:=ExtractFilePath(Application.ExeName);
FileRun1.FileName:='zip.exe';
FileRun1.Parameters:=ExtractFilePath(Application.ExeName)+
'Backupbd\'+Edit1.Text+'.zip '+ExtractFilePath(Application.ExeName)+'bd\*.*';
FileRun1.Execute;
end;
Boton descomprimir
procedure TfrmBackup.DescomprimirClick(Sender: TObject);
begin
opdAbrir.InitialDir := ExtractFilePath(Application.ExeName)+'Backupbd';
if (opdAbrir.Execute)then
begin
FileRun1.Directory := ExtractFilePath(Application.ExeName);
FileRun1.FileName := 'unzip.exe';
FileRun1.Parameters := opdAbrir.FileName+' -d C:\';
FileRun1.Execute;
si alguien sabe el error por favor espero colaboración.----Gracias por su tiempo prestado.
Hola,
No te doy una respuesta, pero, yo de ti echaría un vistazo a los componentes TurboPower Abbrevia (http://tpabbrevia.sourceforge.net/), puesto que te permiten comprimir y descomprimir archivos (también en formato Zip) de una forma bastante sencilla y sin depender de ningún programa externo. :rolleyes:
roman
23-09-2008, 06:11:21
No podemos asegurar mucho sin saber qué es y qué hace FileRun1, pero por lo que dices del espacio, es posible que el problema esté en FileRun1.Parameters. Fíjate que el valor que le pasas es:
C:\Archivos de programa\Giros\Backupbd\noseque.zip C:\Archivos de programa\Giros\bd\*.*
Si esto es algo que se traduce en la llamada a un ejecutable externo, tal como zip.exe, y sus parámetros, nota que los espacios que existen en Archivos de programa, provocan que los parámetros sean
C:\Archivos
de
programa\Giros\Backupbd\noseque.zip
C:\Archivos
de
programa\Giros\bd\*.*
en lugar de los dos que esperarías:
C:\Archivos de programa\Giros\Backupbd\noseque.zip
C:\Archivos de programa\Giros\bd\*.*
Si tal es la situación entonces tendrías que encerrar cada parámetro entre comillas " para que la llamada al ejecutable quede así:
"C:\Archivos de programa\Giros\Backupbd\noseque.zip" "C:\Archivos de programa\Giros\bd\*.*"
// Saludos
BuRtOn
23-09-2008, 06:11:30
Hola dec, si se que existen componentes mas sencillos, pero el hecho es que ya me habia funcionado todo, y no se que sibalos le borro mi amigo o que le hizo y no me funciona, y es una aplicación comercial, y nos toca entregarla hoy a las 6:30 am, entiendes, asi que no se otro metodo ni utilizar componentes para hacer el backuo, asi que me toca rectificar y encontrar el error...Gracias
BuRtOn
23-09-2008, 06:16:42
Saludos Roman, no se que tan viable sea escribir el parametro entre ", ya que me generaria error.Gracias por tu respuesta.
roman
23-09-2008, 06:19:14
Es la forma en que funciona Windows, así que es bastante viable. Prueba a hacerlo manualmente y verás como las " no sólo son deseables sino imperativas.
Pero, como dije antes, depende de lo que haga exactamente FileRun1.
// Saludos
roman
23-09-2008, 06:22:21
FileRun1.Parameters :=
'"' + ExtractFilePath(Application.ExeName) + 'Backupbd\' + Edit1.Text + '.zip" "' +
ExtractFilePath(Application.ExeName) + 'bd\*.*"';
// Saludos
BuRtOn
23-09-2008, 06:31:07
Diosssssssssss esto me esta matandooo haaaa :mad: mi amigo es un destructor, no roman no me salio....mira como tengo el codigo:
Botón Comprimir
procedure TfrmBackup.ComprimirClick(Sender: TObject);
begin
FileRun1.Directory:=ExtractFilePath(Application.ExeName);
FileRun1.FileName:='zip.exe';
FileRun1.Parameters:='"' + ExtractFilePath(Application.ExeName) +
'Backupbd\' + Edit1.Text+'.zip" "' + ExtractFilePath(Application.ExeName) + 'bd\*.*"';
FileRun1.Execute;
end;
Botón descomprimir
procedure TfrmBackup.DescomprimirClick(Sender: TObject);
begin
opdAbrir.InitialDir := ExtractFilePath(Application.ExeName)+'Backupbd';
if (opdAbrir.Execute)then
begin
FileRun1.Directory := ExtractFilePath(Application.ExeName);
FileRun1.FileName := 'unzip.exe';
FileRun1.Parameters := opdAbrir.FileName+' -d C:\';
FileRun1.Execute;
end;
end;
y aun no asi me sale, pero en cuanto al FileRun1, esta perfecto por que no lo movieron para nada, se que es codigo, y es la parte de comprimir...por que no me comprime ahora...haaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:mad::(:confused:
Hola,
De todas formas, ¿no te retorna "FileRun" ningún error ni nada? Es que en otro momento, si llega a "fallar" por otro motivo... no sé, se me hace raro. Deberías poder obtener algún tipo de error o excepción, ¿no?
BuRtOn
23-09-2008, 06:36:51
No dec, nada no me envia ningun mensaje de error ni de excepción.....y lo peor de todo es que me funcionaba....Haaaaa que piedraa brother...ya casi es la 1 y aqui arreglando esto pa llevarlo a las 6:30 am....de hoy...juasss...
Hola,
Se me hace complicado ayudarte... creo que debe ser algo "tonto", pero, que, se nos pasa por alto. Pero tú estás a los mandos, por decirlo de algún modo. :) ¿Comprobaste que no hay procesos de los programas "zip" y "unzip" corriendo? Es posible que eso impida un buen funcionamiento de los mismos. En cualquier caso, insisto con los TurboPower Abbrevia: creo que ya habráis terminado (hay ejemplos de uso muy sencillos) y creo también que son una solución más elegante. Pero es mi opinión.
PD. Por si te sirve de algo aquí son las 7:53 de la mañana. Tienes suerte de estar allí. :D :D
roman
23-09-2008, 06:52:19
Casualmente tengo aquí un zip.exe y he hecho esta prueba:
uses ShellApi;
function DQuotedString(S: String): String;
begin
Result := '"' + S + '"';
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Parameters: String;
begin
Parameters :=
DQuotedString('c:\Documents and Settings\roman\Mis documentos\noseque.zip') +
' ' +
DQuotedString('C:\Documents and Settings\roman\Mis documentos\Trabajo\cdsview\*.*');
ShowMessage(Parameters);
ShellExecute(Handle, 'open', 'zip.exe', PChar(Parameters), nil, SW_SHOW);
end;
que funciona bien. Es decir, lo mismo que te digo con las comillas dobles pero más ordenado y usando ShellExecute.
Puedes intentar cambiando FileRun por ShellExecute. Antes puedes probar poner entre comillas dobles tambien a FileRun1.Directory, pues también tiene espacios.
¿De dónde sale FileRun? ¿Es un componente hecho por ustedes?
// Saludos
BuRtOn
23-09-2008, 06:58:40
Es un action list, ---> Standard Action clases ---> File ----> TFileRun, es de delphi y no es ningun componente...
roman
23-09-2008, 06:59:03
¡¡Ya sé qué es FileRun!! Es una acción. He hecho esta prueba
FileRun1.Directory := Application.ExeName;
FileRun1.FileName := 'zip.exe';
FileRun1.Parameters :=
DQuotedString('c:\Documents and Settings\roman\Mis documentos\noseque.zip') +
' ' +
DQuotedString('C:\Documents and Settings\roman\Mis documentos\Trabajo\cdsview\*.*');
FileRun1.Execute;
y funciona bien.
// Saludos
a ver si no recuerdo mal, teniendo windows XP instalado:
- con particiones FAT, necesita entrecomillar los parámetros
- con particiones NTFS, no es necesario entrecomillar los parámetros
No puedo asegurarlo al 100 %, porque no tengo FAT por aquí. Para curarte en salud, entrecomilla (comillas dobles) los parámetros y siempre funcionará.
... a estas horas ya habrá entregado el programa, pero los "service packs" están para algo ;).
Saludos
roman
23-09-2008, 16:58:14
No lo creo Lepe. Parámetros son parámetros, y se separan con espacios. FAT o NTFS, es imposible que un programa distinga que si le mandas C:\Archivos de programa\hola en la línea de comandos, en realidad te refieres a un sólo parámetro y no a tres.
Y bueno, de hecho ayer mismo estuve probando esto, tanto en FileRun como en ShellExecute (con NTFS) y no funciona si se omiten las comillas dobles. Y, de hecho, examiné el código de FileRun y vi que usa ShellExecute. Claro que esto último ya no lo comenté porque nuestro amigo se desapareció.
// Saludos
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.