-
Скачал из интернета компонент, позволяющий хранить в списке целые числа, работает также как TStringList, но не со строками, а с числами. И вот не могу сообразить как сохранить целый компонент со списком чисел в BLOB-поле таблицы базы данных. Пробовал это сделать так:
var
Stream: TStream;
IntList: TxIntegerList;
begin
IntList := TxIntegerList.Create;
Stream := DataSet1.CreateBlobStream(
DataSet1.FieldByName('BLOB_FIELD',
bmWrite); IntList.Add(10); Stream.Write(IntList, SizeOf(IntList)); Stream.Free;
IntList.Free;
end;
A считать данные из BLOB-поля обратно в компонент думал так:
...
Stream := DataSet1.CreateBlobStream(DataSet1.FieldByName('BLOB_FIELD', bmRead);
...
Stream.Read(IntList, Stream.Size);
...
Это не работает... Подскажите, как написать правильно?
-
Перед изменениями набор данных, обычно, переводят в режим редактирования, а после изменений, производится подтверждения сохранения.
-
Прошу прощения, методы Edit и Post датасета - были применены, я забыл их скопировать из моего кода. Я после записи с помощью StreamWrite - потом смотрел внутри таблиц базы - в BLOB - поле - легли данные... Не получается их считать. Сразу после Stream.Read(IntList, Stream.Size) проверяю количество записей IntList.Count = 0 Чего-то с потоками я не понимаю...
-
> Скачал из интернета компонент, позволяющий хранить в списке целые числа,
Дальше можно было бы и не читать.
> Stream.Write(IntList, SizeOf(IntList)); // сохраняю IntList в потоке...
Фига там сохраняется, а не IntList. Посмотри (и постарайся понять) справку по TStream.Write
> Stream.Read(IntList, Stream.Size);
Тебе очень сильно поыезло, что после этой строчки вообще хоть что-то работает. Посмотри (и постарайся понять) справку по TStream.Read
> Подскажите, как написать правильно?
Чтобы писать правильно, надо понимать, как работают применяемые тобой языковые конструкции и библиотечные компоненты. Программирование -- это понимание, а не произнесение заклинаний.
В данном случае, "как правильно" написано в справке по TStream. Есть, правда, неприятный момент: написанное там предполагает знание других базовых понятий. Например, что такое "переменная", "компонент", "параметр процедуры". Судя по твоему коду, у тебя это знание отсутствует полностью, программирование для тебя -- это тёмная магия, заключающаяся в выписывании непонятных заклинаний из непонятных алхимических манускриптов.
|