Cita:
Empezado por Al González
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