首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

有关存取access中ole对象的有关问题

2012-02-20 
有关存取access中ole对象的问题谁能帮我解释下这段代码我打问号的那几句的意思,不胜感激//编辑图像按钮的o

有关存取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的源码就知道了

热点排行