有关存取access中ole对象的问题
谁能帮我解释下这段代码我打问号的那几句的意思,不胜感激
//编辑图像按钮的onclick事件
procedure TEmpForm.btnEditPClick(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
Image1.Picture.LoadFromFile(OpenDialog1.FileName);
SaveImage(OpenDialog1.FileName, ADQ1.FieldByName( 'Photo '));
end;
end;
function TEmpForm.LoadImage(Field: TField): Boolean;
var
Stream: TStream;
BMP: TBitmap;
begin
Stream:= TMemoryStream.Create;
BMP:= TBitmap.Create;
try
try
Stream:= Field.DataSet.CreateBlobStream(Field, bmRead);?????
Stream.Position:= 0; ?????
BMP.LoadFromStream(Stream); ???
Image1.Picture.Assign(BMP); ???
Result:= True;
except
Result:= False;
end;
finally
FreeAndNil(Stream);
FreeAndNil(BMP);
end;
end;
function TEmpForm.SaveImage(const FileName: string; Field: TField): Boolean;
var
BMP: TBitmap;
Stream: TMemoryStream;
begin
BMP:= TBitmap.Create;
Stream:= TMemoryStream.Create;
try
try
BMP.Assign(Image1.Picture);????
Stream.LoadFromFile(FileName);?????
Field.DataSet.Edit;
TBlobField(Field).LoadFromStream(Stream);?????
Result:= True;
except
Result:= False;
end;
finally
FreeAndNil(Stream);
FreeAndNil(BMP);
end;
end;
[解决办法]
Stream:= Field.DataSet.CreateBlobStream(Field, bmRead);?????
创建一个流存放数据库中读出的数据,这个时候Stream.Position=Stream.size,指针在结尾
Stream.Position:= 0; ?????
指针移到头上
BMP.LoadFromStream(Stream); ???
这也要解释,要不就是loadfromfile要不就是loadfromstream, 读数据而已,
Image1.Picture.Assign(BMP); ???
把bmp的数据赋给image
delphi都有源码看stream的源码就知道了