Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo Hace 3 Horas
Avatar de Angel.Matilla
Angel.Matilla Angel.Matilla is offline
Miembro
 
Registrado: ene 2007
Ubicación: Toledo - España
Posts: 1.422
Poder: 21
Angel.Matilla Va por buen camino
Error al asignar un TQRImage

Buenas tardes. Estoy usando BCB6 y QR 3.0.9. Tengo este query:
Código SQL [-]
SELECT TRIM(A.Titulo)||' ('||CAST(A.Anyo AS VARCHAR(5))||')' Titulo, A.Interpretes, A.Autor, A.Duracion, A.Idiomas, A.Subtitulos, B.Caratula
   FROM Titulos A 
   LEFT JOIN Imagen B ON A.Tipo = B.Tipo AND A.Registro = B.Registro AND B.Posicion = 'P' WHERE A.Tipo = 1 AND A.Disco = :Disco
   ORDER BY Orden
que devuelve, por ejemplo, esto:

y tengo este código para meter el resultado del query en el QR:
Cita:
TMemoryStream *msImagen = new TMemoryStream;
static_cast<TGraphicField *>(Query->FieldByName("Caratula"))->SaveToStream(msImagen);
if (msImagen->Size > 0)
{
tbmp->Assign(Query->FieldByName("Caratula"));
ImgInf->Picture->Assign(tbmp);
}
Como veis el query devuelve una imagen. Sin embargo, al leer el query, no sé si lo que viene es un BMP o un JPG, y no sé en cual de los dos casos me da este error:

¿Cómo puedo esquivarlo?
Responder Con Cita
  #2  
Antiguo Hace 12 Minutos
emailx45 emailx45 is online now
Miembro
 
Registrado: abr 2025
Posts: 22
Poder: 0
emailx45 Va por buen camino
Thumbs up

Cuando usas un TStream (y subclases) para este tipo de acción, normalmente, tendrás que iniciar los bits para determinar el tipo de archivo junto a todos los demás bytes.

Así mismo, necesitarás hacer el "avance" para el punto donde realmente vienen los bytes de la imagen.

Cuando un mapa de bits se convierte en una secuencia de funciones básicas de Delphi, los 2 primeros bytes identifican el tipo de imagen. En este caso, un mapa de bits es igual a: byte 1 (66=B), byte 2 (77=M).

A partir del tercer byte comienzan los datos de la imagen.


Código Delphi [-]
procedure TForm2.LerBlobParaMemoryStream( MemTable: TFDMemTable; const FieldName: string; DestStream: TMemoryStream );
var
  BlobStream: TStream;
begin
  if MemTable.FieldByName( FieldName ).IsNull then
    Exit;

  BlobStream := MemTable.CreateBlobStream( MemTable.FieldByName( FieldName ), bmRead );
  try
    DestStream.Clear;
    DestStream.CopyFrom( BlobStream, BlobStream.Size );
    DestStream.Position := 0; // Retorna o ponteiro para o inicio do stream
  finally
    BlobStream.Free;
  end;
end;

Código Delphi [-]
procedure TForm2.Button1Click( Sender: TObject );
var
  LStream: TMemoryStream;
  LBytes : TBytes;
  LText  : string;
begin
  LStream := TMemoryStream.Create;
  try
    LerBlobParaMemoryStream( FDMemTable1, 'bitmapi', LStream );
    //
    if LStream.Size = 0 then
      Exit;

    LStream.Position := 0;
    //
    SetLength( LBytes, 3 );
    if LStream.Read( LBytes, 3 ) = 0 then
      Exit;
    //
    for var B in LBytes do
      LText := LText + '[' + B.ToString + ']=' + ifthen( B = 0, '0', Chr( B ) ) + ',';
    //
    Memo1.Lines.Add( 'Bytes= ' + LText );
  finally
    LStream.Free;
  end;
end;


Última edición por emailx45 fecha: Hace 9 Minutos a las 22:33:34.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Ocultar TQRimage al imprimir reporte (QuickReport) Theluar Impresión 6 09-05-2013 00:32:32
Mostrar imagen en el TQRImage de un Qreport ingabraham Varios 0 06-11-2012 16:10:21
Mantener aspecto de un TQRImage cincosoft Impresión 3 10-09-2011 10:56:51
Graficos TQRImage y final de página Cabanyaler Impresión 1 12-02-2010 11:50:07
problemas con el TQRImage? judoboy Impresión 1 19-05-2003 14:59:11


La franja horaria es GMT +2. Ahora son las 22:43:22.


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