Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-01-2012
Avatar de ethangio
ethangio ethangio is offline
Miembro
 
Registrado: jul 2008
Posts: 63
Poder: 16
ethangio Va por buen camino
Shellexecute con Parametros ...

Buenas tardes a todos ..

He estado buscando en los hilos del foro y en google alguna solucion a mi problema. Les agradezco de antemano su ayuda.

Les comento que no me funciona la funcion shellexecute al pasarle parametros nada mas no crea mi backup no me da ningun error
este es mi codigo .

Código Delphi [-]
var
  linea_mysqldump : String;
begin
  linea_mysqldump := '/c "'+ExtractFilePath(Application.ExeName)+'Data\bin\mysqldump.exe" --opt --user=root --password=holaroot  mibase > "'+ExtractFilePath(Application.ExeName)+'Backups\back.sql" ';
  ShellExecute(handle,'open', 'cmd.exe', PChar(linea_mysqldump), nil, SW_HIDE);

Si cambio ExtractFilePath(Application.ExeName) por C:\archivos de programa\aplicacion\ si hace mi backup ...
Alguna solucion que conozcan ?
Responder Con Cita
  #2  
Antiguo 27-01-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 ethangio.

¿ Revisaste que la función ExtractFilePath te esté devolviendo la cadena C:\archivos de programa\aplicacion\ ?

Si los valores son iguales y realiza la acción de una forma, tiene que realizarlo de la otra.

Para ver si el resultado de la composición de las cadenas es igual podés hacer, por ejemplo:
Código Delphi [-]
function ArmarCadena(const Cadena: string): string;
begin
   Result:= '/c "' +
            Cadena +
            ' Data\bin\mysqldump.exe" --opt --user=root --password=holaroot  mibase > "' +
            Cadena +
            'Backups\back.sql" ';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Clear;
  Memo1.Lines.Add(ArmarCadena(ExtractFilePath(Application.ExeName)));
  Memo1.Lines.Add(ArmarCadena('C:\archivos de programa\aplicacion\'));
end;

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 27-01-2012
Avatar de defcon1_es
defcon1_es defcon1_es is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuenca - España
Posts: 533
Poder: 21
defcon1_es Va por buen camino
Hola. Como dice ecfisa, debes asegurarte que la ruta es igual en ambos casos.

Código Delphi [-]
var linea_mysqldump, ruta : String;
begin
  ruta := SysUtils.IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName));
  showmessage(ruta);
  linea_mysqldump := '/c "'+ruta+'Data\bin\mysqldump.exe" --opt --user=root --password=holaroot  mibase > "'+ruta+'Backups\back.sql" ';
  showmessage(linea_mysqldump);
  ShellExecute(handle,'open', 'cmd.exe', PChar(linea_mysqldump), nil, SW_HIDE);

Si no funciona, usa el debug de Delphi y comprueba el valor de la variable ruta y el de la variable linea_mysqldump
__________________
Progress Openedge
https://abevoelker.com/progress_open...dered_harmful/


Delphi forever...
Responder Con Cita
  #4  
Antiguo 27-01-2012
Avatar de ethangio
ethangio ethangio is offline
Miembro
 
Registrado: jul 2008
Posts: 63
Poder: 16
ethangio Va por buen camino
Gracias por sus comentarios .. Ya estuve checando como me dijeron y si es la misma ruta y todo ya lo cheque a detalle minusiosamente
y sigue igual, con las soluciones que me proporcionaron hace lo mismo ...

Conocen alguna manera de capturar el resultado del shellexecute al mandar el comando cmd con los parametros ?

por que yo pienso que en la funcion ExtractFilePath(Application.ExeName) hay algun caracter que causa que no se ejecute bien el comando a la hora de que se pasa como parametro a shellexecute PChar ... no se si me explique ...

Por que si ya lo hice ya cheque todo si escribo la ruta manual si hace bien el backup pero con la funcion ExtractFilePath(Application.ExeName) ya no ..

Seguiré buscando gracias
Responder Con Cita
  #5  
Antiguo 28-01-2012
Avatar de ethangio
ethangio ethangio is offline
Miembro
 
Registrado: jul 2008
Posts: 63
Poder: 16
ethangio Va por buen camino
Ya va funcionando ... cambie de
ExtractFilePath(Application.ExeName) a ExtractFileDir(Application.ExeName) pero ahora no se por que no me guarda el archivo en

c:\archivos de programa\aplicacion\backups\

Por que si creo el archivo en c:\ si lo crea

Seguire buscando
Responder Con Cita
  #6  
Antiguo 28-01-2012
Avatar de ethangio
ethangio ethangio is offline
Miembro
 
Registrado: jul 2008
Posts: 63
Poder: 16
ethangio Va por buen camino
Miren si yo pongo estas lineas si funciona

Código Delphi [-]
ruta := SysUtils.IncludeTrailingPathDelimiter(ExtractFileDir(Application.ExeName));

linea_mysqldump := '/c "'+trim(ruta)+'Data\bin\mysqldump.exe" --opt --user=root --password=holaroot  mibase > C:\mibackup.sql';

ShellExecute(handle,'open', 'cmd.exe', PChar(linea_mysqldump), nil, SW_SHOWNORMAL);

Pero si pongo el sig codigo
Código Delphi [-]
ruta := SysUtils.IncludeTrailingPathDelimiter(ExtractFileDir(Application.ExeName));

linea_mysqldump := '/c "'+trim(ruta)+'Data\bin\mysqldump.exe" --opt  --user=root --password=holaroot  mibase > "'+trim(ruta)+'\Backups\mibackup.sql"';

ShellExecute(handle,'open', 'cmd.exe', PChar(linea_mysqldump), nil, SW_SHOWNORMAL);
Ya no hace el backup, y me manda un error en la ventana de DOS, que dice : "C:\Archivos" no se reconoce como un comando interno o externo, programa o archivo por lotes.

Entonces quiero pensar que tengo problemas con las comillas no ? pero no se como solucionarlo.
Responder Con Cita
  #7  
Antiguo 28-01-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 ethangio.
Cita:
Ya va funcionando ... cambie de ExtractFilePath(Application.ExeName) a ExtractFileDir(Application.ExeName)
Con ExtractFilePath obtenés: C:\Program Files\aplicacion\ y con ExtractFileDir: C:\Program Files\aplicacion. Por lo que pareciera que te estuviese sobrando un / en el primer caso.

Otra cosa que se me ocurre es que mysqldump.exe no maneje nombres largos (es sólo un lance ya que no conozco la aplicación), en cuyo caso podrías convertirlos a cortos antes de utilizarlos:
Código Delphi [-]
function GetShortName(const FileName:string): string;
var
  ShortName: array[0..255] of char;
begin
  GetShortPathName(PChar(FileName), @ShortName, Length(ShortName));
  Result:= ShortName;
end;

Ejemplo de uso:
Código Delphi [-]
...
 linea_mysqldump := '/c "' + GetShortName(ExtractFileDir(Application.ExeName)) + ...

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #8  
Antiguo 28-01-2012
Avatar de ethangio
ethangio ethangio is offline
Miembro
 
Registrado: jul 2008
Posts: 63
Poder: 16
ethangio Va por buen camino
Gracias .. gracias por su ayuda ...

ecfisa no utilice tu idea pero me diste otra buena ... Ya funciona

Código Delphi [-]
var
  linea_mysqldump, ruta : String;
begin
  ruta := SysUtils.IncludeTrailingPathDelimiter(ExtractFileDir(Application.ExeName));

  linea_mysqldump := '/c "'+trim(ruta)+'Data\bin\mysqldump.exe" --opt --user=root --password=holaroot  mibase > Backups\back.sql';

  ShellExecute(handle,'open', 'cmd.exe', PChar(linea_mysqldump), PChar(ruta), SW_SHOWNORMAL);
end;

Les agradezco por su tiempo y ayuda ... ecfisa y defcon1_es ...
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
Shellexecute mjjj Varios 2 11-09-2007 18:41:21
error al ejecutar parametros con ShellExecute JuanErasmo API de Windows 7 11-05-2007 00:27:26
ejemplos de ShellExecute y winexec ejecutando aplicaciones con parametros JGCG Varios 4 05-05-2007 11:53:49
Parametros Opcionales no Parametros por defecto Velia Varios 7 19-08-2006 16:18:42
shellexecute sarga API de Windows 2 17-04-2004 13:47:26


La franja horaria es GMT +2. Ahora son las 07:42: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