Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-04-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola dmartinezn.

No utilizo mysql por lo que no puedo probar si los parámetros son correctos. Según entiendo de tu primer mensaje, estos no son enviados por la aplicación sino que se determinan dentro del archivo backup.bat.

Yo llamaría a Backup.bat con ShellExecute de este modo:
Código:
{
char cmd[1024];
  GetEnvironmentVariable("COMSPEC", cmd, sizeof(cmd));
  ShellExecute(Handle,
               "open",
               cmd,
               " /K D:\\Damian\\web server\\mysql\\bin\\Backup.bat",
               NULL,
               SW_HIDE);
}
(Linea de comando: /K: ejecuta y permanece, /C ejecuta y retorna inmediatamente)

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 14-04-2012 a las 00:22:58.
Responder Con Cita
  #2  
Antiguo 14-04-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola dmartinezn.

Como te dije antes no uso mysql, pero el código de roman, que sin dudas debe funcionar correctamente, creo que deberías traducirlo más o menos así:
Código:
void Backup(char *User, char *Password, char *Database, char *OutputDir)
{
AnsiString OutputFile = IncludeTrailingPathDelimiter(OutputDir) +
  Database + '_' + FormatDateTime("ddmmyy", Now()) + ".sql";
TVarRec vr[] = {User,Password,Database,OutputFile};
  ShellExecute(0,
               "open",
               "C:\\Program Files\\MySQL\\MySQL Server 5.1\\bin\\mysqldump.exe",
               Format("-u%s -p%s -r %s %s",vr,4).c_str(),
               NULL,
               SW_HIDE);
}

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 14-04-2012 a las 04:19:25. Razón: corregir ortografía
Responder Con Cita
  #3  
Antiguo 14-04-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¡Ah! ¡Bien!

Je, je. Yo como no manejo C y lo único que tengo a la mano es Dev-C++ creé esta función. Menos eficiente que la de ecfisa pero no me puedo quedar con las ganas de ponerla luego del rato que pasé haciendola

Código:
#include <time.h>
#include <shellapi.h>

void backup(char *user, char *password, char *database, char *outputdir)
{
	/* Obtenemos la fecha actual */
	time_t t = time(NULL);
	struct tm *tmp = localtime(&t);
	char fecha[9];
	strftime(fecha, sizeof(fecha), "%d%m%Y", tmp);

	char outputfile[MAX_PATH];
	char args[MAX_PATH];
	
	/* Calculamos el nombre del archivo de salida */
	sprintf(outputfile, "%s\\%s_%s.sql", outputdir, database, fecha);
	
	/* Calculamos los parámetros */
	sprintf(args, "-u%s -p%s %s -r %s", user, password, database, outputfile);
	
	/* Hacemos el respaldo */
	ShellExecute(
		0,
		"open",
		"C:\\Program Files\\MySQL\\MySQL Server 5.1\\bin\\mysqldump.exe",
		args,
		"",
		SW_HIDE);
}
La otra opción de ecfisa, mandando llamar a cmd.exe, seguro que también funciona parra ejecutar el BAT.

// Saludos
Responder Con Cita
  #4  
Antiguo 14-04-2012
dmartinezn dmartinezn is offline
Miembro
 
Registrado: ene 2012
Ubicación: Cuba - Venezuela
Posts: 38
Poder: 0
dmartinezn Va por buen camino
Saludos y muchas gracias por la ayuda.
He probado con cada una de las variantes que ustedes me han dado y no realiza el backup,en esta ocasion el codigo corre perfectamente pero no hace nada.
Responder Con Cita
  #5  
Antiguo 14-04-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola dmartinezn.

Veo que en tu primer mensaje envias la cadena:
Cita:
--opt --password=damian --user=damian ...
Sin embargo los códigos anteriores envían:
Cita:
-udamian -pdamian -r ...
Por mi ignorancia sobre mysql, no tengo ni idea cuál es el correcto (o si lo son ambos), pero yo revisaría el contenido de la cadena que se le envía a mysqldump.exe. Quizá allí radique el problema....

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 15-04-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
dmartinezn, el último código que puse lo probé y funcionó bien. Toma en cuenta que al llamar la función, casi seguro que tienes que especificar el directorio de salida usando dobles \\ y no una sola.

ecfisa, ambas formas de poner los parámetros son correctas. Es algo muy común en unix.

// Saludos
Responder Con Cita
  #7  
Antiguo 15-04-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
ecfisa, ambas formas de poner los parámetros son correctas. Es algo muy común en unix.
Hola roman.

Gracias por la aclaración.

Entonces con toda seguridad se trata de problemas en la definición de la ruta, ya que al igual que vos comprobé en la traducción del mensaje #12 los parámetros enviados por ShellExecute (mediante otro ejecutable) y son correctos. La función del mensaje #13 no la probé por que dí por sentado que funcionaba correctamente.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Backup y Restore desde delphi 7 & mysql MRS@N MySQL 3 06-05-2012 02:57:28
backup Mysql desde c++ builde 6 dmartinezn MySQL 1 22-01-2012 13:41:58
Problema para ejecutar una aplicacion con mysql desde una pc cliente karaoke MySQL 4 23-01-2008 18:25:58
Ejecutar un Backup sierraja Firebird e Interbase 11 18-09-2006 17:33:07
Como ejecutar un archivo .chm desde C++ Builder 5? mapch C++ Builder 1 13-08-2004 07:01:47


La franja horaria es GMT +2. Ahora son las 05:13:40.


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