
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
08.09.2003, 17:54
|
|||
|---|---|---|---|
|
|||
Работа с BLOB |
|||
|
#18+
Есть база на IB/FB. Клиент на C++ Builder (или Delphi - в данном случае не важно). В базе хранятся файлы в битовом поле BlobField (.txt, .xls, .doc, .jpg). В клиенте необходимо иметь возможность просматривать эти файлы. Я пробовал делать через OleContainer таким образом: TMemoryStream *ms = new TMemoryStream; Ole->LoadFromStream(ms); ((TBlobField*)qu->FieldByName("FILE"))->SaveToStream(ms); delete ms; На строке с LoadFromStream вываливается ошибка - Stream read error. Если сделать так: TBlobStream *ms = new TBlobStream(((TBlobField*)qu->FieldByName("FILE")), bmRead); Ole->LoadFromStream(ms); delete ms; то вываливается ошибка Invalid class typecast на строчке с new. Никто не сталкивался с таким вопросом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.09.2003, 20:20
|
|||
|---|---|---|---|
Работа с BLOB |
|||
|
#18+
//--------------------------------------------------------------------------- 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(...){ return false;} delete stream; return true; } //--------------------------------------------------------------------------- bool load_jpeg( TField *field, TJPEGImage *picture ) { assert(field); assert(picture); TMemoryStream *stream = new TMemoryStream; TBlobField *blob = (TBlobField *)field; try { blob->SaveToStream(stream); int sz = stream->Size; if( sz > NULL ) { stream->Seek(0,0); picture->LoadFromStream(stream); } }catch(...){ return false; } delete stream; return true; } //--------------------------------------------------------------------------- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.09.2003, 11:29
|
|||
|---|---|---|---|
|
|||
Работа с BLOB |
|||
|
#18+
Это всё хорошо, а как загрузить это в визуальный компонент. TImage из потока у меня только битмап удалось загрузить, а джпег ни в какую. Вываливается AccessVoilation. Мож чего не так делаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.09.2003, 13:08
|
|||
|---|---|---|---|
Работа с BLOB |
|||
|
#18+
Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.09.2003, 13:17
|
|||
|---|---|---|---|
Работа с BLOB |
|||
|
#18+
У визуальных компонентов есть проперть Canvas, через неё используй функции StretchDraw(const TRect &Rect, TGraphic* Graphic); Draw(int X, int Y, TGraphic* Graphic); TJPEGImage *jpeg; jpeg = new TJPEGImage(); далее то, что написал Lepsik потом ... Canvas->Draw(X, Y, (TGraphic*) jpeg); или ... Canvas->StretchDraw(MyRect, (TGraphic*) jpeg); это для Builder, а для Delphi сам сообразишь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=40&mobile=1&tid=1580006]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
145ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 462ms |

| 0 / 0 |
