powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / BLOB-ы!!! Как с ними бороться????
4 сообщений из 4, страница 1 из 1
BLOB-ы!!! Как с ними бороться????
    #32058566
Lonely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Люди, помогите!!! Есть база данных с blob-полем. Вобщем в этом поле лежат графические файлы XaraX. Когда вся база была в Access 2000, то было все просто - данные поля определялись как OLE-объекты и при вхождении в них приложение (XaraX) сразу открывала вложенную в поле схему. В Delphi по этому поводу какие-то заморочки. Здесь нет поля объекта OLE, который можно было бы присоединить к соответствующему полю таблицы. Как в таком случае "вытащить" документ из BLOB-поля записи, отредактировать его и снова затолкать в запись?
...
Рейтинг: 0 / 0
BLOB-ы!!! Как с ними бороться????
    #32058582
OlegV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Берешь TOleContainer. у него есть методы
LoadFromStream и SaveToStream

Стрим можно получить так:
var
bs: TBlobStream;

bs := TBlobStream.Create(Table.FieldByName() as TBlobField, xxx) xxx - флаг - режим открытия(только-чтение и т.д.). не помню как они пишутся.
Стрим надо создавать *после* позиционирования на строку и удалять перед переходом на новую. Ессно, метод SaveToStream вызывать в режиме State in [dsEdit, dsInsert]
...
Рейтинг: 0 / 0
BLOB-ы!!! Как с ними бороться????
    #32059426
Lonely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот то, что я сделал по Вашему совету:

procedure TForm1.Button1Click(Sender: TObject);
var
Stream1 : TBlobStream;
begin
ADOTable1.Active:=true;
ADOTable1.First;
Stream1 := TBlobStream.Create(ADOTable1.FieldByName('DocTU') as TBlobField, bmRead);
end;

При выполнении данной процедуры вываливается сообщение об ошибке следующего содержания:

Invalid class typecast

В чем тут прикол? Вроде и по Help для Delphi все то же самое я нашел, но вот не работает...:-(
...
Рейтинг: 0 / 0
BLOB-ы!!! Как с ними бороться????
    #32059499
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эту вешь:
ADOTable1.FieldByName('DocTU') as TBlobField
перепиши как:
TBlobField(ADOTable1.FieldByName('DocTU'))

а есть еще TAdoBlobStream ...
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / BLOB-ы!!! Как с ними бороться????
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]