Pobranie i zapis na dysk pola typu BLOB z komponentu TStoredProc

0

Witam !

Lazarus + FirebirdSql 2.5
Jest tabela posiadająca pole BLOB (binary), która służy do przechowywania zdjęć.
Część kodu :

...
StoredProc.Params.AddParam(StoredProc1.Params.CreateParam(ftBlob, 'IMG', ptOutput)).
StoredProc.ExecProc.
...

W jaki sposób mogę pobrać zapisane zdjęcie korzystając z ParamByName a nie FieldByName i przykładowo
zapisać na dysku lub od razu umieścić w TImage jako Picture ?

1
 var
  zs: TStringStream;
begin
  StoredProc.Params.AddParam(StoredProc1.Params.CreateParam(ftBlob, 'IMG', ptOutput));
  StoredProc.ExecProc;
  zs:=TStringStream.Create(StoredProc.ParamByName('IMG').AsBlob);
  Image1.Picture.LoadFromStream(zs);  
  zs.Free;
end;
0

Działa świetnie !

Tak 'dla potomności' : dlaczego TStringStream a nie np. TMemoryStream ?
A gdybym chciał zapisać 'IMG' na dysku w dowolnej lokalizacji ?

0

ponieważ do stringstream jest łatwiej zapisać ciąg znaków. A jak chcesz zapisać do pliku to możesz skopiować ze stringstream do np. memorystream

0

WIELKIE DZIĘKI !

1 użytkowników online, w tym zalogowanych: 0, gości: 1