Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-10-2014
ASAPLTDA ASAPLTDA is offline
Miembro
 
Registrado: jun 2003
Ubicación: COLOMBIA-CALI
Posts: 639
Poder: 21
ASAPLTDA Va por buen camino
Thumbs up ShellExecute con Carpetas con Espacios

Hola Foristas,
Estoy tratando de llamar un programa en una carpeta que tiene espacios
Ejemplo : C:\SERVINET2014 X2\DELPHI

Código Delphi [-]
  pgm:= 'C:\SERVINET2014 X2\DELPHI\EJECUTABLE.EXE';
  w_error:= ShellExecute(Handle, 'open', PChar('c:\test\app.exe'), nil, nil, SW_SHOW);

Pero indica que no se encuentra el programa.
Pero si copio el programa a la carpeta c:\@ entonces funciona
Código Delphi [-]
  pgm:= 'C:\@\EJECUTABLE.EXE';
  w_error:= ShellExecute(Handle, 'open', PChar('c:\test\app.exe'), nil, nil, SW_SHOW);

Podrias alguno indicarme la forma correcta de usar esta intruccion cuando se usan espacios en el folder

Gracias
Responder Con Cita
  #2  
Antiguo 06-10-2014
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Aunque el código que pones no muestra exactamente lo que mencionas, creo que logra comprenderse el problema. La solución es incluir comillas dobles (") al inicio y al final de la ruta. Espero te sea de utilidad.

Saludos.
Responder Con Cita
  #3  
Antiguo 06-10-2014
ASAPLTDA ASAPLTDA is offline
Miembro
 
Registrado: jun 2003
Ubicación: COLOMBIA-CALI
Posts: 639
Poder: 21
ASAPLTDA Va por buen camino
Codigo Utilizado para llamada externa

Cita:
Empezado por Al González Ver Mensaje
Aunque el código que pones no muestra exactamente lo que mencionas, creo que logra comprenderse el problema. La solución es incluir comillas dobles (") al inicio y al final de la ruta. Espero te sea de utilidad.
Saludos.
Gracias Al gonzalez, por su rapido soporte y sigo tratando que me funcione, coloco el codigo correcto para solicitarle si pueda me indique como coloco las comillas dobles
Código Delphi [-]


 T_string:= ExtractFilePath(Application.ExeName) + 'SERVINETCOMPRY.exe' ;
// el valor de T_string   es :   'C:\SERVINET2014 X2\DELPHI\SERVINETCOMPRY.exe'     D.USUARIO = tipo string
 W_ERROR:= ShellExecute(Handle, 'open', PChar(T_string) , PChar(D.USUARIO )   , '', SW_SHOWNORMAL );

el codigo de retorno es 2 el cual encontre el un foro significa archivo no encontrado, en el folder principal hay 1 espacio

Agradezco nuevamente el tiempo que se toma en proveernos soporte
Responder Con Cita
  #4  
Antiguo 06-10-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
"C:\SERVINET2014 X2\DELPHI\SERVINETCOMPRY.exe"
Responder Con Cita
  #5  
Antiguo 06-10-2014
ASAPLTDA ASAPLTDA is offline
Miembro
 
Registrado: jun 2003
Ubicación: COLOMBIA-CALI
Posts: 639
Poder: 21
ASAPLTDA Va por buen camino
Talking ShellExecute + Nombre (Folder / Carpeta) con espacios Solucionado

Cita:
Empezado por Al González Ver Mensaje
Aunque el código que pones no muestra exactamente lo que mencionas, creo que logra comprenderse el problema. La solución es incluir comillas dobles (") al inicio y al final de la ruta. Espero te sea de utilidad.
Saludos.
Gracias Al gonzalez, por su rápida soporte y funciono la llamada externa , coloco el código que uso como referencia propia y de otros foristas
Solucion al problema use comillas Dobles para encerrar la ruta del ejecutable
Código Delphi [-]


 T_string:= ExtractFilePath(Application.ExeName) + 'SERVINETCOMPRY.exe' ;
 T_string:= char(34) +  T_string +  char(34);   // char(34) = '"';

// el valor de T_string   es :   'C:\SERVINET2014 X2\DELPHI\SERVINETCOMPRY.exe'     D.USUARIO = tipo string
 W_ERROR:= ShellExecute(Handle, 'open', PChar(T_string) , PChar(D.USUARIO )   , '', SW_SHOWNORMAL );

el codigo de retorno es 2 el cual encontre el un foro significa archivo no encontrado, en el folder principal hay 1 espacio

Agradezco nuevamente el tiempo que se toma en proveernos soporte

Adjunto Codigos de errores del shellExecute encontrado en otro link externo al foro
Here is a complete list of the possible return values of ShellExecute:
http://tekreaders.com/blog/2011/08/0...-applications/

0 = The operating system is out of memory or resources.
2 = The specified file was not found
3 = The specified path was not found.
5 = Windows 95 only: The operating system denied access to the specified file
8 = Windows 95 only: There was not enough memory to complete the operation.
10 = Wrong Windows version
11 = The .EXE file is invalid (non-Win32 .EXE or error in .EXE image)
12 = Application was designed for a different operating system
13 = Application was designed for MS-DOS 4.0
15 = Attempt to load a real-mode program
16 = Attempt to load a second instance of an application with non-readonly data segments.
19 = Attempt to load a compressed application file.
20 = Dynamic-link library (DLL) file failure.
26 = A sharing violation occurred.
27 = The filename association is incomplete or invalid.
28 = The DDE transaction could not be completed because the request timed out.
29 = The DDE transaction failed.
30 = The DDE transaction could not be completed because other DDE transactions were being processed.
31 = There is no application associated with the given filename extension.
32 = Windows 95 only: The specified dynamic-link library was not found.
Responder Con Cita
  #6  
Antiguo 06-10-2014
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Asegúrate de qué es lo que estás abriendo. Ten en cuenta que al compilar puede ser que estés en una carpeta del tipo C:\...\Debug\ o C:\...\Release\.

Código Delphi [-]
  T_string := ExtractFilePath(Application.ExeName) + 'SERVINETCOMPRY.exe' ;
  T_string := char(34) +  T_string +  char(34);   // char(34) = '"';

  // El valor de T_string DEBERIA SER : "C:\SERVINET2014 X2\DELPHI\SERVINETCOMPRY.exe"
  // D.USUARIO = tipo string

  // Muestro un mensaje en la pantalla para verificar que los datos son correctos.
  ShowMessage('El valor de T_String es ' + T_String);
  ShowMessage('El valor de D.USUARIO es ' + D.USUARIO);

  Application.ShowMessage
  W_ERROR:= ShellExecute(Handle, 'open', PChar(T_string) , PChar(D.USUARIO ), '', SW_SHOWNORMAL);
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
SQL y los espacios en blanco fide SQL 5 11-02-2008 23:44:34
titulo con espacios anubis Varios 3 04-05-2007 21:44:44
Es posible compartir carpetas por Internet utilizando compartir carpetas? JuanErasmo Windows 5 12-02-2007 20:45:17
Espacios a la derecha Johnny Q SQL 3 11-10-2005 20:04:58
problema con espacios en like jpcancino SQL 3 10-02-2004 18:54:03


La franja horaria es GMT +2. Ahora son las 08:32:24.


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