![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Сохранение страницы TF1Book в BLOB-полеDelphi , Базы данных , BLOB поляСохранение страницы TF1Book в BLOB-поле
Оформил: DeeCo uses vcf1, dbtables; procedure SaveSpreadsheet(F1Book: TF1Book); var BlobStream: TBlobStream; MyBlob: HGlobal; pblob: Pointer; begin with Datamodule1.Query1 do begin Set8087CW($133f); try Application.ProcessMessages; F1Book.SaveWindowInfo; MyBlob := GlobalAlloc(GMEM_MOVEABLE, 2000); try F1Book.WriteToBlob(MyBlob, 0); pBlob := globalLock(MyBlob); try Blobstream := TBlobStream.Create(TBlobField(FieldByName('QUOTE_BLOB')), bmWrite); try Blobstream.Write(pBlob^, GlobalSize(myBlob)); finally Blobstream.Free; end; finally globalUnlock(MyBlob); end; F1book.IF1Book_Modified := False; finally globalFree(myblob); end; finally Set8087CW(Default8087CW); Application.ProcessMessages; end; end; end; //Depending on your Delphi Version (<D4), you will need: //D4 und fruhere Versionen brauchen noch: var Default8087CW: Word = $1332; procedure Set8087CW(NewCW: Word); asm MOV Default8087CW,AX FLDCW Default8087CW end; Программный код на языке Delphi для сохранения содержимого объекта TF1Book в поле BLOB (Binary Large OBject) в базе данных. Вот подробное описание каждого участка кода: Главная процедура:
Установка соединения с базой данных:
Сохранение blob-данных:
Запись blob-данных в базу данных:
Очистка:
Альтернативное решение: Если вы используете более современную версию Delphi (D2009 или позднее), можно использовать метод TBlobField.SaveToFile() вместо создания собственного потока blob. Например:
Этот код более компактен и легче для чтения, чем оригинальный код. Однако стоит отметить, что TBlobField.SaveToFile() требует Delphi D2009 или позднее, в то время как оригинальный код совместим с ранними версиями Delphi. В статье описывается процедура сохранения страницы TF1Book в BLOB-поле с использованием компонента TBlobStream и функций GlobalAlloc, GlobalLock, GlobalFree для работы с глобальным памятью. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |