在Delphi5如何调用Access 中 OLE的Bmp字段 (20分)

  • 主题发起人 主题发起人 陈亮96
  • 开始时间 开始时间

陈亮96

Unregistered / Unconfirmed
GUEST, unregistred user!
在Delphi5如何调用Access 中 OLE的Bmp字段
请看我使用的方法:
var st:Tstringstream;
blobstream:Tblobstream;
blobfield:Tblobfield;
begin
adodataset1.Open;
adodataset1.first;
st:=Tstringstream.Create('');
if adodataset1.Fields[5] is Tblobfield then
showmessage('Tblobfield');//显示.

blobfield:= adodataset1.fields[5] as Tblobfield ;//
如果去掉as Tblobfield则出现invalid class typecast错误
but adodataset1.fields[5] is Tblobfield=true
blobstream:=Tblobstream.Create(blobfield,bmwrite);//
编译到这出现错误 incompatible types:'TblobField'and'TField'.
st.CopyFrom(blobstream,blobstream.size);
st.Position:=0;
//olecontainer1.LoadFromStream(st);
image1.Picture.Graphic.LoadFromStream(st); ;
 
试试看:

var
MS:TMemoryStream;
begin
tblobfield(adodataset1.fields[5]).SaveToStream(MS);
image1.Picture.Graphic.LoadFromStream(MS);
end;
 
DreamTiger:
我试过后出现 stack overflow 错误.
 
我懒得用STREAM

临时文件很好用
只不过要判断一下,存在的话删除
TBLOBField(fieldbyname('bmp')).SaveToFile(PhotoFileName);
imgPhoto.Picture.LoadFromFile(PhotoFileName);
 
为怎么不搞JPG文件呢,小了好多。'jpg'是ole字段
jpeg:=tjpegimage.Create;
stream :=TMemoryStream.Create;
tblobfield(adoquery1.FieldByName('jpg')).savetostream(stream);
Stream.Seek(0,soFromBeginning);
jpeg.loadfromstream(stream);
image.Picture.Bitmap.Assign(jpeg);
jpeg.Free;
stream.Free;
 
to honghs:
come on the "Bitmap image is not valid" error.
同时我试过好多方法也都出现这样的错误.
有劳你了.
 
不会吧,我把我那个例子发给你,你看看就知道了。
如果没收到的话,可以叫我重发给你。祝你好运。
 
honghs:
您能把您的例子发地份给我吗?谢谢!!!
E-mail:2000ww@21cn.com
 
honghs.
您好!

能把您的例子发地份给我吗?谢谢!!!
E-mail:
xiaoniu625@263.net
 
接受答案了.
 
honghs.
您好!

能把您的例子发地份给我吗?谢谢!!!
E-mail:
sea302@263.net
 
honghs 给我也发一份吧,你回答了很多这类问题,照着做了很多次还是不行@#$@#$@#
Email:
liaowang@163.com
 
后退
顶部