Recuperar conteúdo de campo blob
Olá amigos.
Estou desenvolvendo uma aplicação doméstica onde gravo arquivos em campos do tipo blob.
Conseguí gravar da seguinte forma:
Qry.ParamByName( ´CAMPO_BLOB´ ).LoadFromFile( OpenDialogArquivos.FileName, ftblob );
Qry.EXECSQL;
Para recuperar o arquivo estou fazendo assim:
var BlobStream : TBlobStream;
FileStream : TFileStream;
begin
BlobStream := TBlobStream.Create( QryArquivos.FieldByName( ´CAMPO_BLOB´ ) as TBlobField, bmRead );
FileStream := TFileStream.Create( ´c:\ARQUIVO.EXE´ ), fmCreate or fmOpenWrite);
FileStream.CopyFrom( BlobStream, 0);
end;
só que já na primeira linha ocorre o erro:
EinvalidCast with message ´Invalid Class TypeCast´
Estou seguindo o exemplo de um artigo sobre campos blob do site firebase.com.br.
a propósito o tipo do campo é: BLOB sub_type 0 segment size 80
Será que alguém poderia me dar uma dica?
Uso firebird 1.5 e Delphi 6 com ibx.
Muito grato.
Estou desenvolvendo uma aplicação doméstica onde gravo arquivos em campos do tipo blob.
Conseguí gravar da seguinte forma:
Qry.ParamByName( ´CAMPO_BLOB´ ).LoadFromFile( OpenDialogArquivos.FileName, ftblob );
Qry.EXECSQL;
Para recuperar o arquivo estou fazendo assim:
var BlobStream : TBlobStream;
FileStream : TFileStream;
begin
BlobStream := TBlobStream.Create( QryArquivos.FieldByName( ´CAMPO_BLOB´ ) as TBlobField, bmRead );
FileStream := TFileStream.Create( ´c:\ARQUIVO.EXE´ ), fmCreate or fmOpenWrite);
FileStream.CopyFrom( BlobStream, 0);
end;
só que já na primeira linha ocorre o erro:
EinvalidCast with message ´Invalid Class TypeCast´
Estou seguindo o exemplo de um artigo sobre campos blob do site firebase.com.br.
a propósito o tipo do campo é: BLOB sub_type 0 segment size 80
Será que alguém poderia me dar uma dica?
Uso firebird 1.5 e Delphi 6 com ibx.
Muito grato.
Fsflorencio
Curtidas 0
Melhor post
Afarias
02/02/2005
uma outra forma é fazer::
T+
var
FileStream: TFileStream;
begin
FileStream := TFileStream.Create( ´c:\ARQUIVO.EXE´ ), fmCreate or fmOpenWrite);
TBlobField(QryArquivos.FieldByName( ´CAMPO_BLOB´ )).SaveToStream(FileStream);
{...}T+
GOSTEI 2
Mais Respostas
Fsflorencio
02/02/2005
Funcionou.
Obrigado!
Obrigado!
GOSTEI 0