Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-09-2008
Avatar de Garry
Garry Garry is offline
Miembro
 
Registrado: nov 2007
Posts: 60
Poder: 17
Garry Va por buen camino
Exclamation TJpegImage.LoadFromFile repite parte de mi ruta!!

¡Hola, muchachos!

Gracias por la atención. He estado buscando por la red y el foro y no encuentro a nadie con un problema similar, pero seguro que lo hay

Uso Delphi 7.0 y quiero cargar imágenes a partir de una ruta base que extraigo desde un archivo a una variable global (G_Img_Logos_URL), que luego concateno al nombre seleccionado con un TOpenPictureDialog (mi instancia se llama M_VOP_Logo). Mi TImage se llama: M_Img_Logo.

Este es el código para seleccionar la imagen al pulsar sobre su espacio del formulario:
Código Delphi [-]
procedure TF_Empresa.M_Img_LogoClick(Sender: TObject); //buscamos foto y cargamos
var
  Jpeg:TJpegImage;
  Corriente:TMemoryStream;
begin
  M_VOP_Logo.InitialDir := G_Img_Logos_URL;
  if M_VOP_Logo.Execute then
    begin   // hacer todo lo que sea
    Jpeg:=nil;
    Corriente:=nil;
    FileLogo:=ExtractFileName(M_VOP_Logo.Filename);
   // URLLogos:=  URLLogos+FileLogo;
    //mostramos la foto para su comprobacion
    try
      Jpeg:=TJpegImage.Create;
     Jpeg.LoadFromFile(M_VOP_Logo.FileName);
     //Jpeg.LoadFromFile(URLLogos);
      Corriente:=TMemoryStream.Create;
      Jpeg.SaveToStream(Corriente);
      Corriente.Seek(0,soFromBeginning);
      Jpeg.LoadFromStream(Corriente);
      M_Img_Logo.Picture.Assign(Jpeg);
    Finally
     // Corriente.Clear;
     // Jpeg.CleanupInstance;
      Corriente.Free;
      Jpeg.Free;
      M_VOP_Logo.InitialDir:='';
    end;
    end
  else // el usuario le ha dado al boton cancelar o ha cerrado la ventana con la X
  begin
  // FileLogo:='';
   M_VOP_Logo.filename := EmptyStr;
  end;
end;

Y este el de mostrarla de nuevo al navegar por la base de datos:
Código Delphi [-]
procedure TF_Empresa.M_CargarLogo (sFoto: String);
var
  Jpeg: TJpegImage;
  Corriente: TMemoryStream;
begin
  if sFoto = '' then begin
    M_Img_Logo.Repaint;
    M_Img_Logo.Picture := nil;
  end else try
    Jpeg:=nil;
    Corriente:=nil;
    Jpeg      := TJpegImage.Create;   //nil;
    Corriente := TMemoryStream.Create;//nil;  
    //Jpeg.LoadFromFile ('\\GARRY\CGeSt\Datos\Logos\'+sFoto);
    Jpeg.LoadFromFile (G_Img_Logos_URL+sFoto);
    Jpeg.SaveToStream (Corriente);
    Corriente.Seek (0, soFromBeginning);
    Jpeg.LoadFromStream (Corriente);
    M_Img_Logo.Picture.Assign (Jpeg);
  finally
    M_Img_Logo.Repaint;
    M_Img_Logo.Picture := nil;
    Corriente.Free;
    Jpeg.Free;
  end;
end;

Mi ruta de la aplicación es "C:\COGS\CGeSt\". Primero selecciono una imagen y me la muestra pero buscarla una segunda vez (el segundo trozo de código), casca. Al depurar la ejecución veo que la variable es correcta y vale "Loly\Datos\Logos\", pero me devuelve el error porque toma una ruta incorrecta (me duplica esta que acabo de ecribir):
Cita:
---------------------------
Debugger Exception Notification
---------------------------
Project CGeSt.exe raised exception class EFOpenError with message 'Cannot open file "C:\COGS\CGeSt\Loly\Datos\Logos\Loly\Datos\Logos\alfa.jpg". El sistema no puede encontrar la ruta especificada'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
Van varios días de pruebas y no entiendo ni jota, ¿podría ayudarme alguien, por favor? Si falta aclarar algo, no duden en preguntar. Gracias de antemano
Responder Con Cita
  #2  
Antiguo 01-09-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola, Jpeg.LoadFromFile (G_Img_Logos_URL+sFoto);
sera eso no? hazte un showmessage antes de cada llamada a loadfromfile de lo que le pasas, creo que simplemente estas sumando un directorio con un nombre de fichero con path
Responder Con Cita
  #3  
Antiguo 01-09-2008
Avatar de Garry
Garry Garry is offline
Miembro
 
Registrado: nov 2007
Posts: 60
Poder: 17
Garry Va por buen camino
Talking Me temo que no es eso

Hola, coso, gracias por la asistencia.

Como decía, en la depuración se observa que el valor de las variables es correcto:
G_Img_Logos_URL = 'Loly\Datos\Logos\'
sFoto = 'alfa.jpg'

Y un ShowMessage me lo confirma. Si lo hago literalmente también me rula.

El problema debe estar en que guarda en algún sitio la anterior ruta durante el primer procedimiento (el de asignación). Además, al navegar por la base de datos con valores ya guardados sólo se ejecuta el segundo procedimiento. En este caso, ¡todo marcha perfectamente!

¿Puede ser debido a una mala utilización del ExtractFileName?
__________________
Mi última duda en el foro: TJpegImage.LoadFromFile repite parte de mi ruta!!

Última edición por Garry fecha: 01-09-2008 a las 10:21:10. Razón: Añadir negrita...
Responder Con Cita
  #4  
Antiguo 01-09-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Código Delphi [-]
  Jpeg:=nil;
    Corriente:=nil;
    FileLogo:=ExtractFileName(M_VOP_Logo.Filename);
   // URLLogos:=  URLLogos+FileLogo;
    //mostramos la foto para su comprobacion
    try
      Jpeg:=TJpegImage.Create;
     Jpeg.LoadFromFile(M_VOP_Logo.FileName);

bueno, aqui jpeg.loadfromfile se tendria que llamar con el path incluido, no haria falta extraer tansolo el filename.

PD : edito, nada, no le veo error
Responder Con Cita
  #5  
Antiguo 01-09-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
ni idea, tampoco lo entiendo... quiza tendrias que poner mas codigo e indicar donde te salta exactamente
Responder Con Cita
  #6  
Antiguo 01-09-2008
Avatar de Garry
Garry Garry is offline
Miembro
 
Registrado: nov 2007
Posts: 60
Poder: 17
Garry Va por buen camino
Sí, perdona. En la siguiente línea del 2º procedimiento:
Código Delphi [-]
Jpeg.LoadFromFile (G_Img_Logos_URL+sFoto);
__________________
Mi última duda en el foro: TJpegImage.LoadFromFile repite parte de mi ruta!!
Responder Con Cita
  #7  
Antiguo 01-09-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Creo que ya se

Código Delphi [-]
G_Img_Logos_URL = 'Loly\Datos\Logos\'
sFoto = 'alfa.jpg'

Al no indicar ni la unidad ni el directorio raiz de Loly\datos\...te inicia en el directorio de la aplicacion. Prueba de poner G_Img_Logos_Url := 'c:\etc...';
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
como mostrar una pagina(html) parte por parte? gabrielflowers PHP 10 02-04-2008 00:37:21
problemas con el LoadFromFile sac OOP 14 19-07-2007 16:55:34
LoadFromFile con una progressbar Jesús Pena Varios 5 18-04-2007 20:19:24
TJpegImage en BDS 2006 johurgi Gráficos 11 27-10-2006 12:23:57
TJpegImage u otro daly Gráficos 2 16-11-2003 21:20:16


La franja horaria es GMT +2. Ahora son las 20:10:23.


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