Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-10-2025
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Ubicación: Toledo - España
Posts: 1.418
Poder: 21
Angel.Matilla Va por buen camino
Tengo un problema al descargar una imagen

La imagen está guardada en una tabla de una BB.DD. en Firebird. A ver si alguien me ayuda porque estoy más perdido que, como dice Alberto Chicote, un cerdo en una perfumería. Estoy compilando un proyecto y me da este error:
Cita:
[Linker Error] Unresolved external 'BLOBtoJPG(Db::TBlobField *)' referenced from C:\TPV\DATFIJ.OBJ
En el formulario en que da el error tengo este código:
Código:
extern TJPEGImage* BLOBtoJPG(TBlobField *CampoBLOB);
y llamo a la función así:
Código:
TImage *Imagen = static_cast<TImage *>(Source);
Imagen->Picture->Assign(BLOBtoJPG(static_cast<TBlobField*>(fMenu->Query->FieldByName("Imagen"))));
y en el formulario donde la llamo están estos includes:
Código:
#include <vcl.h>
#include <memory>
#include <olectl.h>
#include <jpeg.hpp>
En un módulo que tengo para todas estas funciones que se usan en varios sitios la función está declarada así:
Código:
TJPEGImage* BlobtoJPG(TBlobField *CampoBLOB)
{
     if (!CampoBLOB->Value.IsEmpty())
     {
          TJPEGImage *JPeg = new TJPEGImage;
          TMemoryStream *StreamTmp = new TMemoryStream;
          CampoBLOB->SaveToStream(StreamTmp); //sacamos el jpg y se convierte a stream
          StreamTmp->Seek(0, soFromBeginning);
          JPeg->LoadFromStream(StreamTmp);
          return(JPeg);
     }
     else
          return(NULL);
}
Esta función, y otras varias, estoy harto de usarlas con este mecanismo (definirlas en un fichero cpp y llamarlas con la declaración extern) desde hace mucho tiempo y no me ha dado error nunca, pero no sé cual es el problema, no soy capaz de verlo.

Última edición por Angel.Matilla fecha: 24-10-2025 a las 18:03:59. Razón: Falta información
Responder Con Cita
  #2  
Antiguo 25-10-2025
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
¿Puede que no esté bien la imagen guardada?
También intenta cambiar la extensión, en lugar de .obj
Código PHP:
TJPEGImageBlobtoJPG(TBlobField *CampoBLOB)
{
    if (!
CampoBLOB)
    {
        
ShowMessage("CampoBLOB es NULL");
        return 
NULL;
    }
    
    if (
CampoBLOB->Value.IsEmpty())
    {
        
ShowMessage("CampoBLOB está vacío");
        return 
NULL;
    }
    
    try
    {
        
TJPEGImage *JPeg = new TJPEGImage;
        
TMemoryStream *StreamTmp = new TMemoryStream;
        
        
ShowMessage("Tamaño del BLOB: " IntToStr(CampoBLOB->BlobSize));
        
        
CampoBLOB->SaveToStream(StreamTmp);
        
ShowMessage("Tamaño del stream: " IntToStr(StreamTmp->Size));
        
        
StreamTmp->Position 0;
        
JPeg->LoadFromStream(StreamTmp);
        
        
ShowMessage("JPEG cargado correctamente");
        
delete StreamTmp;
        return 
JPeg;
    }
    catch(
Exception &e)
    {
        
ShowMessage("Error: " e.Message);
        return 
NULL;
    }

</div>
Responder Con Cita
  #3  
Antiguo 25-10-2025
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Ubicación: Toledo - España
Posts: 1.418
Poder: 21
Angel.Matilla Va por buen camino
Cita:
Empezado por Casimiro Noteví Ver Mensaje
¿Puede que no esté bien la imagen guardada?
También intenta cambiar la extensión, en lugar de .obj
Gracias por la respuesta. Probaré ahora mismo. Lo del cambio de extensión no lo entiendo: esa extensión está en el mensaje de error que da al compilar, no la pongo yo.
Responder Con Cita
  #4  
Antiguo 25-10-2025
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
¿Puede ser que hayas escrito en minúsculas en lugar de mayúculas?


Código Delphi [-]
// Declaración (en el .h) - MAYÚSCULAS
TJPEGImage* BLOBtoJPG(TBlobField *CampoBLOB);

// Implementación (en el .cpp) - minúsculas  
TJPEGImage* BlobtoJPG(TBlobField *CampoBLOB)  // ← ¡DIFERENTE!
{
    // código...
}

Última edición por Neftali [Germán.Estévez] fecha: 27-10-2025 a las 09:16:53.
Responder Con Cita
  #5  
Antiguo 25-10-2025
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Ubicación: Toledo - España
Posts: 1.418
Poder: 21
Angel.Matilla Va por buen camino
Cita:
Empezado por Casimiro Noteví Ver Mensaje
¿Puede ser que hayas escrito en minúsculas en lugar de mayúculas?


// Declaración (en el .h) - MAYÚSCULAS
TJPEGImage* BLOBtoJPG(TBlobField *CampoBLOB);

// Implementación (en el .cpp) - minúsculas
TJPEGImage* BlobtoJPG(TBlobField *CampoBLOB) // ← ¡DIFERENTE!
{
// código...
}
¡Seré mendrugo! Justo ese era el problema.
Responder Con Cita
  #6  
Antiguo 25-10-2025
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por Angel.Matilla Ver Mensaje
¡Seré mendrugo! Justo ese era el problema.



De todas formas edita tu functión porque no estás liberando la memoria.
Mira el ejemplo que te he puesto.
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
Alguien me ayuda con los streams? mrnovice Gráficos 8 25-04-2008 16:38:46
¿Alguien me ayuda a programar? Nanaky Varios 12 04-06-2007 11:53:59
¿Alguien me ayuda con la busqueda? sergiotur Tablas planas 3 06-03-2007 20:52:34
Venganza... alguien me ayuda? cirilungol Varios 18 10-02-2006 16:44:18
ALGUIEN ME AYUDA CON EDBEngineError ronson Conexión con bases de datos 10 17-02-2004 20:41:14


La franja horaria es GMT +2. Ahora son las 03:28:35.


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