LoadFromStream 似乎在 Delphi 5 中不起作用

LoadFromStream doesn't appear to work in Delphi 5

我正在使用 Delphi 5 Enterprise,因为我正在使用的程序就是用它编写的。我编写了一个非常愉快地将位图保存到 Access 数据库的过程。现在我希望能够检索位图。保存位图,我使用 SaveToStream。检索它们时,我使用了 LoadFromStream,但编译器告诉我它无法识别该函数。代码如下:

 procedure TForm1.Button2Click(Sender: TObject);
 var
    Field : TBlobField;
    Stream : TStream;
    BMap : TBitMapImage;
 begin
   if BloBQuery.Active then
      begin
         Field := TBlobField(BlobQuery.FieldByName('Blob'));
         Stream := BlobQuery.CreateBlobStream(Field, bmRead);
         BMap := TBitMapImage.Create;
      try
         Image2.Picture.Graphic := BMap.LoadFromStream(Stream);
      finally
         BMap.Free;
         Stream.Free;
      end;
   end;
end;

谁能告诉我 LoadFromStream 什么时候不起作用?这似乎很奇怪!谢谢

写位图的代码是:

    procedure TForm1.Button1Click(Sender: TObject);
var
  Field : TBlobField;
  Stream : TStream;
begin
   if (BlobQuery.Active = True) and (Image1.Picture.Graphic <> nil) then begin
       BlobQuery.Insert;
       Field := TBlobField(BlobQuery.FieldByName('Blob'));
       Stream := BlobQuery.CreateBlobStream(Field, bmWrite);
       try
          Image1.Picture.Graphic.SaveToStream(Stream);
       finally
          Stream.Free;
          BlobQuery.Post;
       end;
   end;
end;

假设将 Image1.Picture.Graphic 保存到数据库时指向 TBitmap 对象,则需要使用 TBitmap 对象而不是 TBitMapImage 对象读回图像,例如:

procedure TForm1.Button2Click(Sender: TObject);
var
  Field : TBlobField;
  Stream : TStream;
  BMap : TBitmap;
begin
  if BlobQuery.Active then
  begin
    Field := TBlobField(BlobQuery.FieldByName('Blob'));
    Stream := BlobQuery.CreateBlobStream(Field, bmRead);
    try
      BMap := TBitmap.Create;
      try
        BMap.LoadFromStream(Stream);
        Image2.Picture.Graphic := BMap;
      finally
        BMap.Free;
      end;
    finally
      Stream.Free;
    end;
  end;
end;

或者:

procedure TForm1.Button2Click(Sender: TObject);
var
  Field : TBlobField;
  Stream : TStream;
begin
  if BlobQuery.Active then
  begin
    Field := TBlobField(BlobQuery.FieldByName('Blob'));
    Stream := BlobQuery.CreateBlobStream(Field, bmRead);
    try
      Image2.Picture.Bitmap.LoadFromStream(Stream);
    finally
      Stream.Free;
    end;
  end;
end;