Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
получение OLE HANDLE
|
|||
|---|---|---|---|
|
#18+
Привет. Подскажите вот такую вещь. Мне необходимо получить из базы блоб и передать его ActiveX компоненту. База ОРАКЛ 8.0.5 работаю через DOA 3.4.3 ActiveX компонент: Tidestone Formula One 6.1 У Formula One есть метод ReadFromBlob(hBlob, nReservedBytes) hBlob OLE_HANDLE Reference to a BLOB variable in memory. Так вот вопрос, как мне получить этот OLE_HANDLE ? Из базы блоб полчаю вот так. blob := TBLobField(headInfo.FieldByName('excel_file')); headInfo – это TOracleDataSet (TOracleDataSet является наследником TDataSet); так вот как теперь мне получить HANDLE на объект хранящейся в TBLobField. Или возможно существуют другие способы ? Хотелось бы еще отметить что в настоящий момент существует решение этой проблемы через временный файл т.е. у TBLobField есть метод SaveToFile, а у Formula One ReadFromFile. Но хотелось бы решить эту проблему без временных файлов, так как это значительно снижает производительность. Я понимаю что должен быть способ, но как ??? Заранее благодарен за помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2003, 14:19 |
|
||
|
получение OLE HANDLE
|
|||
|---|---|---|---|
|
#18+
типа пример :) var sheetBlob, sheetSize : integer; bs : tBlobStream; // copy from table to spread sheet sheetSize := tBlobField (srcTable.FieldByName ('Package Formula')).BlobSize; if sheetSize > 0 then begin sheetBlob := GlobalAlloc (GHND, sheetSize); try bs := tBlobStream.Create (tBlobField (srcTable.FieldByName ('Package Formula')), bmRead); sheetPointer := GlobalLock (sheetBlob); try bs.Read (sheetPointer^, sheetSize); finally GlobalUnlock (sheetBlob); bs.Free; end; f1Book1.ReadFromBlob (sheetBlob, 0); finally GlobalFree (sheetBlob); end; end; // copy from spread sheet to table srcTable.Edit; bs := tBlobStream.Create (tBlobField (srcTable.FieldByName ('Package Formula')), bmWrite); sheetBlob := GlobalAlloc (GHND, 2048); sheetSize := 2048; try f1Book1.WriteToBlob (sheetBlob, 0); sheetPointer := GlobalLock (sheetBlob); try sheetSize := GlobalSize (sheetBlob); bs.Write (sheetPointer^, sheetSize); finally GlobalUnlock (sheetBlob); end; finally bs.Free; GlobalFree (sheetBlob); end; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2003, 14:44 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=32253736&tid=2117059]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 397ms |

| 0 / 0 |
