Опубликовано: 22 сен 04
Рейтинг:
Рейтинг:
Автор: Lepsik
Прислал: Lepsik
//--------------------------------------------------------------------------- bool save_jpeg( TField *field, TJPEGImage *picture ) { assert(field); assert(picture); TMemoryStream *stream = new TMemoryStream; TBlobField *blob = (TBlobField *)field; try { picture->SaveToStream(stream); int sz = stream->Size; if( sz > NULL ) { stream->Seek(0,0); blob->LoadFromStream(stream); } }catch(Exception &ex){ MessageDlg(ex.Message, mtError, TMsgDlgButtons()<<mbOK, 0); return false;} delete stream; return true; } //--------------------------------------------------------------------------- bool load_jpeg( TField *field, TJPEGImage *picture ) { bool result = true; assert(field); assert(picture); TMemoryStream *stream = new TMemoryStream; CHECK_RIGHT<TBlobField *>(stream); TBlobField *blob = (TBlobField *)field; try { blob->SaveToStream(stream); int sz = stream->Size; if( sz > NULL ) { stream->Seek(0,0); picture->LoadFromStream(stream); }else result = false; }catch(Exception &ex){ MessageDlg(ex.Message, mtError, TMsgDlgButtons()<<mbOK, 0); result = false;} delete stream; return result; } //--------------------------------------------------------------------------- bool jpeg2file( TField *field, char *name_file ) { bool result = true; assert(field); assert(name_file); TMemoryStream *stream = new TMemoryStream; TBlobField *blob = (TBlobField *)field; try { blob->SaveToStream(stream); int sz = stream->Size; if( sz > NULL ) { stream->Seek(0,0); stream->SaveToFile(name_file); }else result = false; }catch(Exception &ex){ MessageDlg(ex.Message, mtError, TMsgDlgButtons()<<mbOK, 0); result = false;} delete stream; return result; } //--------------------------------------------------------------------------- bool save_jpeg( TField *field, ::Graphics::TBitmap *picture ) { assert(field); assert(picture); bool result = false; TMemoryStream *stream = new TMemoryStream; TBlobField *blob = (TBlobField *)field; try { picture->SaveToStream(stream); int sz = stream->Size; if( sz > NULL ) { stream->Seek(0,0); blob->LoadFromStream(stream); } }catch(Exception &ex){ MessageDlg(ex.Message, mtError, TMsgDlgButtons()<<mbOK, 0); result = false;} delete stream; return true; } //--------------------------------------------------------------------------- bool file2field( TField *field, String name_file ) { if( !FileExists( name_file ) ) return false; assert(field); try { TBlobField *blob = (TBlobField *)field; blob->LoadFromFile( name_file ); }catch(...){ return false;} return true; } //--------------------------------------------------------------------------- bool field2file( TField *field, String name_file ) { assert(field); try { TBlobField *blob = (TBlobField *)field; blob->SaveToFile( name_file ); }catch(...){ return false;} return true; }
в программе :
TImage *imageOnForm = new TImage(this); TJPEGImage *jpeg = new TJPEGImage; TADOQuery *rec = getRecordSet("SELECT pic FROM picture WHERE id_pic=1"); bool rs = load_jpeg( rec->Fields->Fields[0], jpeg ); rec->Close(); imageOnForm->Picture->Assign(jpeg); // картинка на форме должна измениться delete jpeg; delete imageOnForm;
.....................
Комментарии
uvBlobLoader - загрузка/выгрузка BLOB полей базы данных
Краткие сведения о утилите.
Автор: Юрий Выровщиков
Лицензия:Freeware
Сайт: http://www.uvsoftium.ru/
Назначение: Инструмент импорта/экспорта BLOB полей базы данных.
Размер: 1,3 Мб (508 кб в архиве),
Примечание: не требует установки
Позволяет загружать картинки, тексты из файлов или буфера обмена в BLOB поля, и наоборот, сохранять их в файлы. Файлы, хранимые в BLOB полях можно просматривать с помощью внешнего приложения. Для SQL Server 7, 2000.
Возможно пригодится.