Access中“OLE对象”字段中的“长二进制数据”的操作? (50分)

  • 主题发起人 主题发起人 ymf
  • 开始时间 开始时间
Y

ymf

Unregistered / Unconfirmed
GUEST, unregistred user!
该字段中存的图象数据,如果实现以下功能:
1、读出图象数据后能在TImage控件中显示。
2、把该图象数据存成一个 *.BMP文件。
用ADO来实现
 
应当第2个步骤先来。首先用一个ADODataset或AdoQuery打开字段所在表,然后用如下语句
实现:
//1,将该字段内容存为临时位图文件
TBlobField(AdoDataSet1.FieldByName('BmpBolb')).SaveToFile('tmp.bmp');
//2.TImage控件读入该临时文件。
Image1.Picture.LoadFromFile('tmp.bmp');
//3.删除该临时文件。
deleteFile('tmp.bmp');
 
请问高手.能不能存取文件。(一个或多个)
 
HunterTeam老兄,不行呀,出错呀
 
怎么没人帮忙,人都去哪儿了?
 
试试这个:
导入:
if opendialog1.Execute then
begin
with table1 do begin
open;
insert;
MyFile:=Tfilestream.create(opendialog1.FileName,fmopenread);
Stream := TBlobStream.Create(FieldByName('graphic') as TBlobField, bmWrite);
//graphic为字段名
MemSize := MyFile.Size;
Buffer := AllocMem(MemSize);
try
Stream.Seek(0, soFromBeginning);
MyFile.Read(Buffer^,MemSize);
Stream.Write(Buffer^,MemSize);
finally
MyFile.Free;
Stream.Free;
end;
post;
当然也可以用
DBimage.Picture.LoadFromFile('tmp.bmp');
输出:
var
astream:tblobstream;
fstream:tmemorystream;
begin
if savedialog1.Execute then
begin
fstream:=tmemorystream.Create;
astream:=tblobstream.Create(table1.fieldbyname('graphic') as tblobfield,bmread);
try
fstream.SetSize(astream.Size);
fstream.LoadFromStream(astream);
fstream.SaveToFile(savedialog1.FileName)
finally
astream.Free;
fstream.Free;
end;
 
接受答案啦!
 
后退
顶部