Carregar imagem do BD em um TIMAGE
Estou usando o codigo abaixo para mostrar uma imagem jpeg que foi salva em um banco FIREBIRD . Porém tenho uma duvida, na hora de liberar a memoria do objeto b (STREAM) o correto é usar B.DESTROY como no codigo abaixo ou usar B.FREE?
Preciso saber disso porque este codigo vai ser usado com frequencia e não quero ter problemas de memoria na maquina do usuario.
A linha b.destroy é o melhor modo de liberar a memoria do objeto b ou o melhor é usar b.free?
Preciso saber disso porque este codigo vai ser usado com frequencia e não quero ter problemas de memoria na maquina do usuario.
var jpg : TJpegImage; b : TStream; ... If not(fieldbyname(\'Foto\').isnull) then begin b:= CreateBlobStream(fieldbyname(\'Foto\'),bmRead); if b.size > 0 then Try Jpg := TJpegImage.create; jpg.LoadFromStream(b); Image1.Picture.Assign(Jpg); except ShowMessage(\'Erro\'); end else Image1.Picture.assign(nil); b.Destroy; jpg.free; end else Image1.Picture.assign(nil);
A linha b.destroy é o melhor modo de liberar a memoria do objeto b ou o melhor é usar b.free?
Luiz Carlos
Curtidas 0
Respostas
Mateus Ribeiro
03/07/2016
Bom dia!
Eu particularmente usaria o FreeAndNil(), o Free destroi o objeto mas permanece indicando seu endereço na memória! O FreeAndNil() destroi o objeto e apaga quaquer indicio dele da memória. Boa sorte!
Eu particularmente usaria o FreeAndNil(), o Free destroi o objeto mas permanece indicando seu endereço na memória! O FreeAndNil() destroi o objeto e apaga quaquer indicio dele da memória. Boa sorte!
GOSTEI 0