|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Сохранить список целых чисел в поток в BLOB поле
Скачал из интернета компонент, позволяющий хранить в списке целые числа,
работает также как TStringList, но не со строками, а с числами. И вот не могу сообразить как сохранить целый компонент со списком чисел в BLOB-поле таблицы базы данных. Пробовал это сделать так: Код:
var Stream: TStream; IntList: TxIntegerList; begin IntList := TxIntegerList.Create; Stream := DataSet1.CreateBlobStream( DataSet1.FieldByName('BLOB_FIELD', bmWrite); // DataSet1 - уже открытый датасет, где есть BLOB поле 'BLOB_FIELD' IntList.Add(10); // добавил в список одно число Stream.Write(IntList, SizeOf(IntList)); // сохраняю IntList в потоке... Stream.Free; IntList.Free; end; Код:
... Stream := DataSet1.CreateBlobStream(DataSet1.FieldByName('BLOB_FIELD', bmRead); ... Stream.Read(IntList, Stream.Size); ... Подскажите, как написать правильно? |
#2
|
|||
|
|||
Хм...
Я бы попробовал примерно так для начала: Код:
var Stream : TMemoryStream; begin Stream := TMemoryStream.Create(Nil); Try IntegerList.SaveToStream(Stream); Stream.Seek(0,0); (DataSet1.BlobField As TBlobField).LoadFromStream(Stream); Finally Stream.Free; End; end; var Stream : TMemoryStream; begin Stream := TMemoryStream.Create(Nil); Try (DataSet1.BlobField as TBlobField).SaveToStream(Stream); Stream.Seek(0,0); IntegerList.LoadFromStream(Stream); Finally Stream.Free; End; end; С этим компонентом не пробовал, а вот jpeg'и так делал. Все работало прекрасно. |
#3
|
|||
|
|||
Цитата:
Да, наверное это бы сработало... но ведь компонент TxIntegerList - скачанный из интернета - самодельный, и он не имеет в своём наборе методов записи в поток и чтения из потока. Как тогда быть? |