Одна вещь, которая поразила меня, была ваша линия:
TBlobField *blob; blob=new (TBlobField);
Прежде всего, я не уверен, почему вы используете этот синтаксис вместо:
TBlobField *blob = new TBlobField;
Во-вторых, конструктор TBlobField принимает один аргумент - указатель на TComponent, который действует как владелец объекта и является объектом, ответственным за очистку памяти впоследствии. Вы можете попробовать сделать следующее:
TBlobField *blob = new TBlobField(Table1);
Должен признать, что я не слишком много занимался программированием баз данных в C ++ Builder, однако вышеприведенное должно работать.
Редактировать: Еще одна вещь, однако, то, как вы используете TBlobField
, никогда не ассоциируется с таблицей. Вы можете найти эту статью на about.com: Хранение записей в поле BLOB [1] . Он написан на Delphi, но должен легко переноситься на C ++ благодаря инфраструктуре VCL.
Вы можете попытаться использовать следующее вместо этого, хотя оно не проверено, поэтому вы можете столкнуться с некоторыми проблемами при этом, если это так, скажите мне:
TField *field = Table1->FieldByName("image");
TBlobField *blob = dynamic_cast<TBlobField *>(field);
if (blob)
{
blob->LoadFromFile(file);
}
[1] http://delphi.about.com/od/database/a/record2blob.htm