FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Problema con ShellExecute =(
Hola y buenos dìas a todos, lo que sucede es que necesito ejectuar un programa desde delphi, para eso estoy usando ShellExecute, lo que intento hacer es lo siguiente :
ShellExecute(form1.Handle,nil,'cmd.exe','/c mysqldump --skip-opt --user=root --password=aaa inventario > c:\resp.sql',nil,SW_SHOWNORMAL); Se puede ver claramente que lo que trata de ahcer es respaldar mi base de datos, la cosa es que si me genera el archivo sql pero.... VACÌO!!! no contiene absolutamente nada, no se si sea por que no paso bien los paràmetros a la funcion.... Por cierto, puse la pregunta aqui por que se me hizo lo mas acertado, ya que aunque quiero hacer un respaldo estoy usando la funcion ShellExecute. Muchas gracias por su tiempo XD |
#2
|
||||
|
||||
OJO....lo que ejecutas en el shell es cmd.exe y le pasas como parametro mysqldump lo demas siguen siendo paramtros para cmd.exe no para mysqldump. Que sucede pues que cmd.exe ejecuta mysqldump y obviamente no le pasa ningun parametro.
Solucion : Elimina cmd.exe y cambialo por mysqldump.exe (con su ruta) y en los parametros deja lo que ya tenias: hellExecute(form1.Handle,nil,' mysqldump.exe,' --skip-opt --user=root --password=aaa inventario > c:\resp.sql',nil,SW_SHOWNORMAL)
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
#3
|
||||
|
||||
Me parece que no es así. ShellExecute no entiende de redirecciones, y por ello hará caso omiso del '>'. Al usar cmd.exe estamos usando una copia del intérprete, y éste sí que entiende la redirección. Y por ello es que, como lo hace Ken, sí se crea el archivo, aunque esté vacío.
Lo que creo que sucede, es que hay algún error en los parámetros que le pasa a mysqldump. Yo acabo de hacer la prueba como propone Ken y funciona bien. Pero si paso algún parámetro incorrecto (la contraseña por ejemplo), el archivo que se obtiene está vacío. Supongo que mysqldump no manda los errores por la salida estándar y por ello éstos no aparecen en el archivo creado. Agrego El error puede deberse incluso a que mysqldump.exe no se encuentre en un directorio del PATH. // Saludos Última edición por roman fecha: 28-07-2007 a las 05:46:49. |
#4
|
||||
|
||||
Gracias por las respuestas.
Roman ya chequé lo que me comentaste pero realmente los parámetros no son, por que lo que tengo en el ShellExecute lo copié y pegué tal cual en la consola y si jaló perfectamente, me generó el respaldo de pies a cabeza. Ahora con lo que me comentas del PATH por ahí estuve investigando y según esto para cambiar el PATH debes editar el archivo Autoexec.bat, y según también lo que vi, que este archivo en windows XP se llama Autoexec.nt. Para sacarme de dudas, me puse a buscar los dos archivos, el autoexec.bat que econtré en C:\ se encontraba completamente vacío, entonces encontré también en C:\WINDOWS\System32 el autoexec.nt y contenía esto :
Y según lo que encontré por ahí, este archivo debería verse mas o menos así :
Entonces para cambiar el PATH, me posicioné en la consola he hice : C:\>set Path=C:\Archivos de programa\Borland\Delphi7\Bin;C:\Archivos de programa\Borland\Delphi\Projects\Bpl\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Arc hivos de programa\MySQL\MySQL Server 5.0\bin Donde la última dirección es donde se encuentra el mysqldump,pero cuando cierro y abro la consola, consulto el path pero sigue como si no le hubiera cambiado nada que puede ser??? o como le hago para editar el path?? Gracias XD |
#5
|
||||
|
||||
Bueno ya por fin pude editar el path me metì Panel de control->Sistema->Opciones Avanzadas-> Variables de entorno y le puse la direccion donde se encuentra el mysqldump, sin emabrgo el problema persiste
|
#6
|
||||
|
||||
Bueno ya casi resuelvo el problema, por fin pude respaldar usando la funciòn asì:
ShellExecute(form1.Handle,nil,'C:\Archivos de programa\MySQL\MySQL Server 5.0\bin\mysqldump.exe',' --compact --skip-opt --user=root --password=aaa inventario --result-file=c:\resp.sql',nil,SW_SHOWNORMAL); El respaldo de que sale, sale, pero sale horrible, o sea sin saltos de línea ni nada, cuando eejcuto directamente el mysqldump me sale perfectamente ordenado. Que se podría hacer en este caso??? |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
problema con el ShellExecute | nogoncar | C++ Builder | 5 | 10-07-2007 10:42:44 |
Problema con shellexecute | ebeltete | API de Windows | 4 | 21-10-2006 00:23:12 |
Problema con ShellExecute | Walterdf | Varios | 9 | 18-11-2005 20:44:19 |
shellexecute. | REHome | API de Windows | 2 | 26-09-2005 11:23:25 |
Problema con ShellExecute | hector_etv | Varios | 1 | 07-08-2005 04:11:47 |
|