Ver Mensaje Individual
  #1  
Antiguo 01-09-2008
Avatar de Garry
Garry Garry is offline
Miembro
 
Registrado: nov 2007
Posts: 60
Reputación: 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