Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-10-2017
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
Cita:
Empezado por TOPX Ver Mensaje
Ok, entonces hay que hacer el casteo al tipo de dato del parámetro, osea algo como
Código:
::BLOBtoJPG((TBlobField*)Query->FieldByName("Imagen"))
¿Ves? Estas cosas no se me ocurren nunca . Ha funcionado a la perfección.
Cita:
Empezado por TOPX Ver Mensaje
Eso es equivocado; el método BLOBtoJPG no está pidiendo un valor, está pidiendo un objeto.
Ya, pero si se puede usar como parámetro (Query->ParamByName("Imagen")->AsBlob), alguna forma tiene que haber para llamar a ese objeto desde un FieldByName.
Cita:
Empezado por ecfisa Ver Mensaje
Solo como observación, me parece ver un problema de memory leak en esa función...
¿Dónde? A mi no me da ningún error de memoria.
Responder Con Cita
  #2  
Antiguo 13-10-2017
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Angel.Matilla Ver Mensaje
¿Dónde? A mi no me da ningún error de memoria.
Código:
TJPEGImage*  __fastcall BlobToJpg(TBlobField *CampoBLOB)
{
    if(!CampoBLOB->Value.IsEmpty())
    {
        TJPEGImage *JPeg = new TJPEGImage;             // <==== (1)
        TMemoryStream *StreamTmp = new TMemoryStream;  // <==== (2)
        CampoBLOB->SaveToStream(StreamTmp); //sacamos el jpg y se convierte a stream
        StreamTmp->Seek(0,soFromBeginning);
        JPeg->LoadFromStream(StreamTmp);
        return(JPeg);
    }
    else
        return(NULL);
}
Tal vez no todavia...

Cuando solicitas recursos usando VCL es tu responsabilidad liberarlos, Builder C++ no liberará automáticamente la memoria ocupada, aún cuando se trate de variables locales a la función.

En ese código no se libera la variable SteramTmp; y lo mas serio es que no se puede liberar la variable JPeg sin dejar inoperante la función.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 14-10-2017
Avatar de TOPX
TOPX TOPX is offline
Miembro
 
Registrado: may 2008
Ubicación: Bogotá
Posts: 527
Poder: 17
TOPX Va camino a la fama
Cita:
Empezado por ecfisa Ver Mensaje
Cuando solicitas recursos usando VCL es tu responsabilidad liberarlos, Builder C++ no liberará automáticamente la memoria ocupada, aún cuando se trate de variables locales a la función.
Es muy importante esto que dice ecfisa, hay que aplicar esa directriz siempre.

Verguenza para mí que no lo había pillado en el código inicial.
-
__________________
"constructive mind, destructive thoughts"
Responder Con Cita
  #4  
Antiguo 14-10-2017
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Poder: 19
Angel.Matilla Va por buen camino
¡Pues no me había dado cuenta! Tenéis razón. El problema es cómo liberar ambas variables ya que el jpeg es lo que devuelve como respuesta la función; no se me ocurre como. Acaso sea mejor sistema el que me sugieres en tu código, invocando en la función tanto el campo blob como el TImage en que ha de situarse; de esa forma se pueden liberar recursos. Voy a probarlo.
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
Cargar Imagen desde un Hosting b3nshi Internet 2 05-02-2010 19:13:29
Cargar imagen desde directorio domenor Gráficos 13 16-10-2007 16:54:30
Cargar Imagen desde un Form secundario Bicholoco Gráficos 11 02-04-2007 17:11:51
Cargar una imagen desde la web a un TImage asegura Gráficos 3 20-10-2006 02:13:10
Cargar una imagen desde sitio en internet?? burasu Internet 10 01-09-2004 13:05:49


La franja horaria es GMT +2. Ahora son las 02:07:21.


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