C++ Builder显示access数据库图片问题
下面代码中
TBlobStream * bm =new TBlobStream(ADOTable1image,bmRead);//创建于图片对象相连的流
一行总提示invalid class typecast错误,望解决!是用ado连接的数据库,图片存在image字段中,ole类型。
void __fastcall TForm1::Form1OnDataChange(TObject *Sender, TField *Field)
{
char * buffer=new char[ADOTable1image->BlobSize];//分配内存,ADOTable1image为图片字段对象
TBlobStream * bm =new TBlobStream(ADOTable1image,bmRead);
TBlobStream * bm =new TBlobStream(ADOTable1image,bmRead);//创建于图片对象相连的流
bm-> Position=0;
bm->Read(buffer,bm->Size);//读入数据
long length=0,bmpLength;//length为‘BM’的前(包括BM)字节数,bmplength为位图文件长度
for(;;)
{//查找'BM'标志
if(buffer[length++]=='B')
if(buffer[length++]=='M')
break;
}
bmpLength=bm->Size-(length-2);//计算位图位文件长度
TFileStream * dstFile=new TFileStream("temp.bmp",fmCreate);//创建临时位图文件
dstFile->Write(buffer+length-2,bmpLength);//将位图数据写入文件
delete dstFile;//释放内存
delete bm;
delete buffer;
DBImage1->Picture->LoadFromFile("temp.bmp");//用TImage控件显示图片
}