Club Delphi  
    Paypal   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

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-09-2008
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
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
  #2  
Antiguo 24-09-2008
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Anoche no seguí porque ya era algo tarde, pero confirmo lo que dice Román, estuve haciendo pruebas y en cuanto la ruta contiene espacios en blanco no funciona, por lo tanto es imperativo el uso de las comillas dobles.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 24-09-2008
rafita rafita is offline
Miembro
 
Registrado: ago 2003
Ubicación: Cuenca- España.
Posts: 309
Poder: 23
rafita Va por buen camino
Hola,
Sólo apostillar que la respuesta que te han dado los compañeros es correcta.

He hecho pruebas con este código y funciona perfectamente:

Código:
procedure TForm1.Button1Click(Sender: TObject);
var
  Exe: String;
  Params: String;
begin
  if ListBox1.ItemIndex<0 then ListBox1.ItemIndex:=0;
  Exe := 'C:\Archivos de programa\Adobe\Photoshop CS\PhotoShop.EXE';
  Params := QuotedStr('"'+ListBox1.Items[ListBox1.ItemIndex]+'"');
  ShellExecute(Handle, 'open', PChar(Exe), PChar(Params), nil, SW_SHOW);
end;
Observa la función QuotedStr, añade unas comillas simples al resultado de unir unas ComillasDobles + NombreFichero + ComillasDobles.

Si mi fichero es
C:\Documents and Setting\Rafita\Imagenes retocadas\Foto14.psd,
el parámetro que le pasas a ShellExecute es
'"C:\Documents and Setting\Rafita\Imagenes retocadas\Foto14.psd"'

Creo que el amigo HemSoft se había enterado con el post de Roman, pero por si acaso, añado esto.
Un saludo,
__________________
Rafita.
Responder Con Cita
  #4  
Antiguo 24-09-2008
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
yo tampoco aporto nada, tan solo la confirmación de que a mi me funciona perfectamente.
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
s:String;
begin
s:= '"'+ ListBox1.Items[ListBox1.ItemIndex]+ '"';
ShellExecute(Handle, 'Open', 'Photoshop',PChar(s) , nil, SW_SHOW);
end;

y te dejo lo mismo pero con winexec por si las moscas....

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
s2:String;
begin
s2:= '"C:\Archivos de programa\Adobe\Photoshop 7.0\photoshop.exe" "'+ ListBox1.Items[ListBox1.ItemIndex]+ '"';
WinExec(PChar(s2),SW_SHOWNORMAL);
end;

que por cierto también me funciona.... aqui hay algo que no nos estas contando
Responder Con Cita
  #5  
Antiguo 24-09-2008
Avatar de HenSoft
HenSoft HenSoft is offline
Miembro
 
Registrado: ago 2008
Posts: 21
Poder: 0
HenSoft Va por buen camino
Problema resuelto

Gracias a todos por ayudarme. La idea de mostrar un mensaje o almacenarlo en una variable me demostró que tenía un \ de mas en otra parte del código y de ahí el error de photoshop.

Creo que ya podría cambiar el títuo del hilo de:

Misterio en Photoshop

a

Torpeza en Henry

Saludos y gracias a todos, son gente muy capaces

Henry
__________________
Todo es veneno y nada es veneno la diferencia está en la dosis
Responder Con Cita
  #6  
Antiguo 24-09-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 27
Delphius Va camino a la fama
Cita:
Empezado por HenSoft Ver Mensaje
Gracias a todos por ayudarme. La idea de mostrar un mensaje o almacenarlo en una variable me demostró que tenía un \ de mas en otra parte del código y de ahí el error de photoshop.

Creo que ya podría cambiar el títuo del hilo de:

Misterio en Photoshop

a

Torpeza en Henry

Saludos y gracias a todos, son gente muy capaces

Henry
Ya lo decía yo...

Cita:
Empezado por Yo Ver Mensaje
Para mi que hay algun dedito de por medio
No hay problema... a todos nos suele pasar. Si me pagaran por cada despistada yo sería rico.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #7  
Antiguo 24-09-2008
Avatar de HenSoft
HenSoft HenSoft is offline
Miembro
 
Registrado: ago 2008
Posts: 21
Poder: 0
HenSoft Va por buen camino
Delphius muchas gracias, tenías razón con lo del dedito.


__________________
Todo es veneno y nada es veneno la diferencia está en la dosis
Responder Con Cita
  #8  
Antiguo 24-09-2008
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.610
Poder: 32
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
Cita:
Empezado por roman Ver Mensaje
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...los espacios en la ruta del archivo de la imagen, confunden al ejecutable pues es como si se mandaran varios parámetros...Si un parámetro contiene espacios entonces debe encerrarse entre comillas dobles...
Claro, Román. Esto de las comillas dobles lo conocía desde hace tiempo, al fijarme cómo Windows definía las propiedades de algunos accesos directos (cuando recién se permitió el uso de espacios en las rutas de archivo), pero no me detuve a observar que no sólo mostrabas la cadena con ShowMessage, sino que además hacías la llamada a ShellExecute.

Mi sugerencia era solamente observar el valor de la cadena, para, primero que otra cosa, verificar visualmente si se trataba de un dato váldo. Mi sospecha era que hubiese algún espacio en blanco en alguno de los extremos o algún otro carácter con mayor posibilidad de conflicto (como al parecer fue el caso con la diagonal demás encontrada).

Saludos.

Al González.
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
Misterio. marcoszorrilla La Taberna 0 07-07-2008 20:24:53
Photoshop Online y gratuito jhonny Noticias 4 07-03-2007 22:55:06
Microsoft Acrylic - ¿Alternativa a PhotoShop? dec Noticias 2 08-09-2005 17:03:14
Utilizar archivos de photoshop (PSD) JoseQ Gráficos 6 27-09-2004 10:56:34
El Misterio de las ADO yusnerqui Varios 7 13-03-2004 17:25:15


La franja horaria es GMT +2. Ahora son las 09:27:33.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi