Delphi tstream:创建时的奇怪行为

Delphi tstream:创建时的奇怪行为,第1张

概述我是Delphi的新手.在TStrem类的文档中,我读到它是一个抽象类. 所以我认为当我尝试使用时,编译器会出错 stream := TStream.Create(); 为什么不? Delphi语言实际上没有任何抽象类的正式概念. 确实,您可以将类定义为抽象类: type TMyClass = class abstract end; 但是你可以很好地实例化这个类.事实上,Delphi中的类 我是Delphi的新手.在TStrem类的文档中,我读到它是一个抽象类.
所以我认为当我尝试使用时,编译器会出错

stream := TStream.Create();

为什么不?

解决方法 Delphi语言实际上没有任何抽象类的正式概念.

确实,您可以将类定义为抽象类:

type  TMyClass = class abstract  end;

但是你可以很好地实例化这个类.事实上,Delphi中的类抽象是一个仅被长期放弃的Delphi .net编译器使用的特性.

抽象类的更有用的定义是包含抽象方法的定义.如果您尝试实例化此类,则会发出编译器警告.如果您愿意,可以通过编译器选项将这些警告提升为错误.

当文档将TStream称为抽象时,它实际上意味着它在概念上是抽象的.实际上它甚至没有任何抽象方法,因此根据我上面的定义它并不是抽象的.

我真的不确定为什么TStream不包含抽象方法.我建议将GetSize,SetSize,Read,Write和Seek真正声明为abstract.我怀疑,如果这个课程今天被设计,那么他们将被宣布为抽象的,并且可能不是出于历史原因.

实例化TStream是Delphi RTL经验不足的程序员常犯的错误.一旦犯了几次错误,通常会吸取教训.不幸的是,系统没有提供标记这个错误的简单方法.每个新程序员都必须学习艰难的方法.

总结

以上是内存溢出为你收集整理的Delphi tstream:创建时的奇怪行为全部内容,希望文章能够帮你解决Delphi tstream:创建时的奇怪行为所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1251251.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存