【发布时间】:2018-10-26 12:43:03
【问题描述】:
我正在使用 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;
【问题讨论】:
-
编译器告诉您
TBitmapImage没有名为LoadFromStream的方法。这是正确的。它也没有名为SaveToStream的方法。所以我不确定你的代码在做什么来保存到流中,但它肯定不是在TBitmapImage上调用SaveToStream。为了给您适当的帮助,我们希望看到保存图像的代码。您是在打电话给Graphic.SaveToStream,还是Graphic.Bitmap.SaveToStream,或者可能是别的什么?总是值得阅读错误消息。错误消息包含您似乎忽略的信息。 -
以后,请在您的帖子中包含确切错误消息。
-
您好,编译器错误是:[Error] Unit1.pas(70): Undeclared identifier: 'LoadFromStream'
-
保存位图的代码是:procedure TForm1.Button1Click(Sender: TObject);变量字段:TBlobField;流:TStream;如果 (BlobQuery.Active = True) 和 (Image1.Picture.Graphic nil) 开始,则开始 BlobQuery.Insert;字段:= TBlobField(BlobQuery.FieldByName('Blob'));流 := BlobQuery.CreateBlobStream(Field, bmWrite);尝试 Image1.Picture.Graphic.SaveToStream(Stream);最后是 Stream.Free; BlobQuery.Post;结尾;结尾;结束;
-
在我删除的答案的 cmets 中,您明确表示您对学习不感兴趣。我已经修复了我的答案,修复了原始版本中的缺陷。但我真的对这个过程没有更多的热情。