Начальные данные.
Используемая база данных: Firebird 2.5
Среда разработки: Delphi XE7, стандартный набор компонентов
Цель: вывести данные из поля blob в Memo
Примечание: Работа с базой данных построена на компонентах FireDAC.
Для реализации вывода есть несколько способов, но я покажу один в кратном варианте, без использования эксептов и доп. проверок, это вы под свой вкус сделаете.
procedure BlobToMemo(Memo_: TMemo; Query: TFDQuery; Field: string); var BlobStream: TStream; begin Memo_.Clear; BlobStream := Query.CreateBlobStream(Query.FieldByName(Field),bmRead); Memo_.Lines.LoadFromStream(BlobStream); BlobStream.Free; end;
где,
TFDQuery — это класс компонента из библиотеки FireDAC.
Теперь пробежимся по описанию работы, если кто-то не понял. Вся работе с Blob идет через поток (TStream), то есть, создаем поток для блоба, одновременно загружая в него данные и потом загружаем наш поток в мемо (благо там есть метод LoadFromStream), и конечно очищаем его после загрузки.
Весь код специально оформи в процедуру, для наглядности.
Вместо компонента FDQuery можно использовать и SQLQuery, или датасет, если у него есть метод CreateBlobStream.