Имеется необходимость считать поле типа Blob из базы SqLite.
SQLite Manager (Firefox-addon) и SQlite Viewer отображает размер поля равный 230 байтам.
Мне нужен именно набор байт, не нужного его во что-то преобразовывать (не в изображение или что-то подобное).
Испробовал несколько найденных в интернетах методов, не завелся не один.
 
 - Код: Выделить всё
- var
 arB:TBytes;
 bf:TBlobField;
 Stream:TStream;
 //<...>
 SQLite := TSqlite3Dataset.Create(nil);
 //Задаем свойства FileName, TableName, SQL
 SQLite.Open;
 SQLite.First; //Запрос выполняется. НЕблоб поля считываются нормально.
 //Первый способ
 arB:=SQLite.FieldByName('bytes').AsBytes;
 //Length(arB); всегда будет 255, хотя по логике должен бы вернуть заветные 230?
 //Второй способ
 BF:=TBlobField.Create(nil);
 BF:=SQLite.FieldByName('bytes') as TBlobField;
 //BF.BlobSize - вообще выдает ошибку, но FSIZE опять 255
 //Третий способ (ну а вдруг бы?)) )
 st:=SQLite.FieldByName('bytes').AsString;
 //Длина вовсе будет нулевой, а содержимое содержать что-то несусветное, но явно не исходные байты (выводил в файл TFileStream)
 //Четвертый способ
 Stream:=SQLite.CreateBlobStream(SQLite.FieldByName('bytes'), bmRead);
 BF:=TBlobField.Create(nil);
 BF.LoadFromStream(Stream);
 //На третьей строке ошибка, т.к. Stream.size имеет длину в 1-ку и вновь косой.
Как же в итоге читать эти грешные блобы?:(



