Recuperar conteúdo de campo blob
02/02/2005
0
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
Curtir tópico
+ 0
Responder
Post mais votado
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+
Afarias
Responder
Mais Posts
Clique aqui para fazer login e interagir na Comunidade :)