|
|
|
Работа с 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, 17:54 |
|
||
|
Работа с 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; } //--------------------------------------------------------------------------- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2003, 20:20 |
|
||
|
Работа с BLOB
|
|||
|---|---|---|---|
|
#18+
Это всё хорошо, а как загрузить это в визуальный компонент. TImage из потока у меня только битмап удалось загрузить, а джпег ни в какую. Вываливается AccessVoilation. Мож чего не так делаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2003, 11:29 |
|
||
|
Работа с BLOB
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2003, 13:08 |
|
||
|
Работа с 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 сам сообразишь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2003, 13:17 |
|
||
|
|

start [/forum/topic.php?fid=40&fpage=506&tid=1580006]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
48ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 330ms |

| 0 / 0 |
