Ver Mensaje Individual
  #15  
Antiguo 26-07-2017
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Posts: 1.350
Reputación: 19
Angel.Matilla Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Y para no dejar el caso inconcluso, este código muestra en un componente TImage los tipos de imagenes soportados y cuya firma sea evaluada y creada en consecuencia.
Código PHP:
void __fastcall TForm1::DataSource1DataChange(TObject *Sender,
      
TField *Field)
{
  
unsigned short us;
  
TBlobField *blob static_cast<TBlobField*>(IBDataSet1->FieldByName("IMAGE"));

  
CopyMemory(&us, &blob->Value[1], sizeof(us));
  
AnsiString st IntToHex(us4);

  
TGraphic *gr;
  try {
    if (
st == "4D42"gr = new Graphics::TBitmap;
    else if (
st == "D8FF"gr = new TJPEGImage;
    else if (
st == "0000"gr = new TIcon;
    else if (
st == "5089"gr = new TPNGObject;
    
// etc, etc, ...
    
gr->Assign(blob);
    
Image1->Picture NULL;
    
Image1->Picture->Bitmap->Height  gr->Height;
    
Image1->Picture->Bitmap->Width   gr->Width;
    
Image1->Picture->Bitmap->Canvas->Draw(00gr);
  } 
__finally {
    
delete gr;
  }

Saludos
Interesante código pero, al menos en BCB 6 tengo un probelma: Al compilar me da un error en la línea else if (st == "5089") gr = new TPNGObject; bueno para ser exactos da tres en la misma línea pero es evidente que resuelto, resueltos todos. Son estos:
  • [C++ Error] E2303 Type name expected
  • [C++ Error] E2034 Cannot convert 'int *' to 'TGraphic *'
  • [C++ Error] E2379 Statement missing ;
Está claro que en BCB 6 no sabe como tratar un PNG. Por otra parte, ¿dónde puedo encontrar las firmas de los diferentes tipos de gráfico?
Responder Con Cita