Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-07-2007
Avatar de Ken_Masters
Ken_Masters Ken_Masters is offline
Miembro
 
Registrado: oct 2006
Posts: 45
Poder: 0
Ken_Masters Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 28-07-2007
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
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||
Responder Con Cita
  #3  
Antiguo 28-07-2007
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
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 06:46:49.
Responder Con Cita
  #4  
Antiguo 28-07-2007
Avatar de Ken_Masters
Ken_Masters Ken_Masters is offline
Miembro
 
Registrado: oct 2006
Posts: 45
Poder: 0
Ken_Masters Va por buen camino
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 :

Código SQL [-]
 
@echo off
REM AUTOEXEC.BAT no se utiliza para inicializar el entorno de MS-DOS.
REM AUTOEXEC.NT se usa para inicializar el entorno de MS-DOS a no ser
REM que se especifique un archivo de inicio diferente en el archivo de
REM informaci¢n de programa (PIF) de la aplicaci¢n.
REM Instalar las extensiones de CD-ROM
lh %SystemRoot%\system32\mscdexnt.exe
REM Instalar el redirector de red (cargar antes que dosx.exe)
lh %SystemRoot%\system32\redir
REM Instalar la compatibilidad con DPMI
lh %SystemRoot%\system32\dosx
REM La siguiente l¡nea habilita Sound Blaster 2.0 para su compatibilidad en NTVDM.
REM El comando para configurar el entorno BLASTER es como sigue a continuaci¢n:
REM SET BLASTER=A220 I5 D1 P330
REM donde:
REM A especifica el puerto de E/S de la base de sound blaster
REM I especifica la l¡nea de petici¢n de interrupciones
REM D especifica el canal DMA de 8-bits
REM P especifica el puerto de E/S de la base MPU-401
REM T especifica el tipo de tarjeta Sound Blaster
REM 1 - Sound Blaster 1.5
REM 2 - Sound Blaster Pro I
REM 3 - Sound Blaster 2.0
REM 4 - Sound Blaster Pro II
REM 6 - SOund Blaster 16/AWE 32/32/64
REM
REM El valor predeterminado es A220 I5 D1 T3 y P330. Si no se especifica algunos 
REM de los modificadores, se usar  el valor predeterminado. (NOTA: puesto que todos
REM puertos est n virtualizados, la informaci¢n proporcionada aqu¡ no tiene que
REM coincidir con la configuraci¢n de hardware real.) NTVDM es compatible s¢lo con Sound Blaster 2.0.
REM El modificador T se debe establecer a 3, si se especifica.
SET BLASTER=A220 I5 D1 P330 T3
REM Para deshabilitar la compatibilidad de sound blaster 2.0 en NTVDM, especifique una direcci¢n de
REM puerto E/S de base SB. Por ejemplo:
REM SET BLASTER=A0

Y según lo que encontré por ahí, este archivo debería verse mas o menos así :

Código SQL [-]
SET COMSPEC=C:\WINDOWS\COMMAND.COM
SET windir=C:\WINDOWS
SET winbootdir=C:\WINDOWS
SET PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;
SET TEMP=C:\WINDOWS\TEMP

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
Responder Con Cita
  #5  
Antiguo 28-07-2007
Avatar de Ken_Masters
Ken_Masters Ken_Masters is offline
Miembro
 
Registrado: oct 2006
Posts: 45
Poder: 0
Ken_Masters Va por buen camino
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
Responder Con Cita
  #6  
Antiguo 28-07-2007
Avatar de Ken_Masters
Ken_Masters Ken_Masters is offline
Miembro
 
Registrado: oct 2006
Posts: 45
Poder: 0
Ken_Masters Va por buen camino
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???
Responder Con Cita
  #7  
Antiguo 06-06-2017
koalasoft koalasoft is offline
Miembro
 
Registrado: oct 2004
Ubicación: Tenosique Tabasco
Posts: 86
Poder: 20
koalasoft Va por buen camino
Prueba con esto ..

Código:
var
  DirCompleto : string;
const MysqlExe = 'C:\Program Files\MariaDB 10.0\bin\mysqldump.exe';

DirCompleto:='C:\respaldo.sql';
BDORG:='mybd';

ShellExecute(self.Handle, PCHAR('open'),PCHAR(MysqlExe),
          PCHAR('-u'+USUARIO+' -p'+CLAVE+' -h'+SRV+' -R -r "'+DirCompleto+'" '+BDORG),
          PCHAR('C:\Program Files\MariaDB 10.0\bin'),
          SW_SHOW);
Saludos !!
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
problema con el ShellExecute nogoncar C++ Builder 5 10-07-2007 11:42:44
Problema con shellexecute ebeltete API de Windows 4 21-10-2006 01:23:12
Problema con ShellExecute Walterdf Varios 9 18-11-2005 21:44:19
shellexecute. REHome API de Windows 2 26-09-2005 12:23:25
Problema con ShellExecute hector_etv Varios 1 07-08-2005 05:11:47


La franja horaria es GMT +2. Ahora son las 02:37:01.


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