Ver Mensaje Individual
  #30  
Antiguo 24-09-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Al González Ver Mensaje
Son, si no me equivoco, para lo mismo que tú has empleado las comillas dobles a los extremos de la concatenación
Pues no Al, las comillas dobles no están para ver si algo se nos escapa. Son imperativas. Vamos a ver un ejemplo más detallado (con Gimp, pues no tengo Photoshop).

Este fragmento fallará:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  Exe: String;
  Params: String;

begin
  Exe := 'C:\Archivos de programa\GIMP-2.0\bin\gimp-2.2.exe';
  Params := 'C:\Documents and Settings\roman\Mis documentos\bookmark.png';
  ShellExecute(Handle, 'open', PChar(Exe), PChar(Params), nil, SW_SHOW);
end;

El error que manda Gimp es éste:




y eso que, al parecer, intenta varias cosas. Pero lo que se observa aquí es que los espacios en la ruta del archivo de la imagen, confunden al ejecutable pues es como si se mandaran varios parámetros.

De hecho, si se manda ese mismo Params a una aplicación Delphi, ParamCount muestra que hay cuatro parámetros:
  • C:\Documents
  • and
  • Settings\roman\Mis
  • documentos\bookmark.png

Por eso son necesarias las comillas dobles. Si el fragmento anterior las incluye:

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  Exe: String;
  Params: String;

begin
  Exe := 'C:\Archivos de programa\GIMP-2.0\bin\gimp-2.2.exe';
  Params := '"C:\Documents and Settings\roman\Mis documentos\bookmark.png"';
  ShellExecute(Handle, 'open', PChar(Exe), PChar(Params), nil, SW_SHOW);
end;

Gimp abre el archivo sin problemas.

Todo radica en un ejecutable y los parámetros que se mandan. Si un parámetro contiene espacios entonces debe encerrarse entre comillas dobles. Esto es independiente de si es Photoshop, Gimp o cualquier otro programa, de dibujo o de lo que sea.

// Saludos
Responder Con Cita