![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Скачал из интернета компонент, позволяющий хранить в списке целые числа,
работает также как 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 - скачанный из интернета - самодельный, и он не имеет в своём наборе методов записи в поток и чтения из потока. Как тогда быть? |