ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Ler Imagem do banco Firebird jpeg error #42 (RESOLVIDO)

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
ivan_bohne
Novato
Novato


Registrado: Segunda-Feira, 7 de Janeiro de 2013
Mensagens: 54

MensagemEnviada: Sex Jan 31, 2014 6:28 pm    Assunto: Ler Imagem do banco Firebird jpeg error #42 (RESOLVIDO) Responder com Citação

Boa noite...

Estou tentando ler imagens que gravei no banco de dados mais esta dando
Erro ao Ler Imagem do banco de Dados Firebird "jpeg error #42" e se dou um select pelo ibexpert e exporto a imagem ela exporta certinho então que dizer que gravou certo agora não estou conseguindo ler

Código:

unit EXIBE_ORDEMSERVICO;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, JPEG, DB, Vcl.ExtCtrls, Vcl.StdCtrls;

type
  TFORM_EXIBE_OS = class(TForm)
    Button1: TButton;
    Image1: TImage;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FORM_EXIBE_OS: TFORM_EXIBE_OS;

implementation

{$R *.dfm}

uses BD;

procedure TFORM_EXIBE_OS.Button1Click(Sender: TObject);
var
  jpgFoto: TJPEGImage;
  msFoto: TMemoryStream;
begin

 msFoto:=TMemoryStream.Create;
  jpgFoto:=TJPEGImage.Create;


  TBlobField(CONECTA.ATENDIMENTO.FieldByName('OS')).SaveToStream(msFoto);

  jpgFoto.LoadFromStream(msFoto);

  jpgFoto:=TJPEGImage.Create;
  jpgFoto.LoadFromStream(msFoto);
  Image1.Picture.Graphic := jpgFoto;
  msFoto.Free;
end;
end.




o select ja dou em outro form

Qualquer ajuda e bem vinda Obrigado...


Editado pela última vez por ivan_bohne em Sex Jan 31, 2014 11:03 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
ivan_bohne
Novato
Novato


Registrado: Segunda-Feira, 7 de Janeiro de 2013
Mensagens: 54

MensagemEnviada: Sex Jan 31, 2014 11:02 pm    Assunto: Re: Erro ao Ler Imagem do banco de Dados Firebird jpeg error #42 Responder com Citação

Consegui resolver com essa função fica ai a dica para quem passar por isso

Código:

unit EXIBE_ORDEMSERVICO;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, Classes, Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, JPEG, DB, Vcl.ExtCtrls, Vcl.StdCtrls,
  Vcl.DBCtrls;

type
  TFORM_EXIBE_OS = class(TForm)
    Imagem: TImage;
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FORM_EXIBE_OS: TFORM_EXIBE_OS;

implementation

{$R *.dfm}

uses BD;

// function RefreshImage(Campo : TField; Img : TImage) : Double;

// É necessário estar declarado ExtCtrls, DB, Jpeg e Classes na seção Uses.

function RefreshImage(Campo : TField; Img : TImage) : Double;
var
  vJpeg   : TJPEGImage;
  vStream : TMemoryStream;
begin
  Result := 0;

  { Verifica se o campo está vázio .}
  if not (Campo.IsNull) then
  begin

    { Cria objeto do tipo TJPEG e objeto do tipo MemoryStream .}
    vJpeg   := TJPEGImage.Create;
    vStream := TMemoryStream.Create;

    { Trata o campo como do tipo BLOB e salva o seu conteúdo na memória }
    TBlobField(Campo).SaveToStream(vStream);

    { Ajusta a posicao inicial de leitura da memória. }
    vStream.Position := 0;

    { Carrega da memória os dados, para uma variável do tipo TJPEG
      (A partir da posicao 0)}
    vJpeg.LoadFromStream(vStream);

    { Retorna o tamanho usado na memória, consequentemente o tamanho do JPEG,
      E Exibe o jpg no Timage }
    Result := (vStream.Size / 1024);
    Img.Picture.Assign( vJpeg);

    { Libera a memória utilizada pelos componentes de conversão o. }
    vJpeg.Free;
    vStream.Free;
  end;
end;


procedure TFORM_EXIBE_OS.FormShow(Sender: TObject);
begin
 RefreshImage(CONECTA.ATENDIMENTO.FieldByName('OS'), Imagem);
end;

end.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB