当使用TStream类时,为什么会出现“抽象错误(Abstract Error)”?

5
当我尝试运行以下简单的代码时,出现了“抽象错误”错误信息:Abstract Error
type
  TForm1 = class(TForm)
    Image1: TImage;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

procedure TForm1.Button1Click(Sender: TObject);
var
  ImageStream: TStream;
begin
  ImageStream := TStream.Create;
  Image1.Picture.Bitmap.SaveToStream(ImageStream);
  ...
end;

我需要提取一个TBitmap的流以进行后续处理...我做错了什么?


5
如果你听从编译器有关实例化抽象类的警告,就可以避免这种情况发生。绝不要忽视编译器的警告。 - Rob Kennedy
1个回答

5

TStream类是一个抽象类,也是所有流的基础。

TStream是流对象的基类类型,可以从各种存储介质(例如磁盘文件、动态内存等)中读取或写入数据。

使用专门的流对象来读取、写入或复制存储在特定介质中的信息。

您可能想使用TMemoryStreamTFileStream,这些流对象会将流内容存储在内存或系统文件中。

procedure TForm1.Button1Click(Sender: TObject);
var
  ImageStream: TMemoryStream;
begin
  ImageStream := TMemoryStream.Create;
  try
    Image1.Picture.Bitmap.SaveToStream(ImageStream);
    ...
  finally
    ImageStream.Free;
  end;
end;

2
忘记了,和TStrings和TStringList一样 :-( - user1769184

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接