gpt4 book ai didi

德尔福tstream : strange behaviour on create

转载 作者:行者123 更新时间:2023-12-03 15:23:08 31 4
gpt4 key购买 nike

我是德尔福的新手。在 TStrem 类的文档中,我读到它是一个抽象类。所以我认为当我尝试使用

创建它时编译器会出错
stream := TStream.Create();

为什么不呢?

最佳答案

Delphi 语言实际上没有任何正式的抽象类概念。

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

type
TMyClass = class abstract
end;

但是你可以很好地实例化这个类。事实上,Delphi 中的类抽象 是仅由长期废弃的 Delphi .net 编译器使用的功能。

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

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

我真的不确定为什么TStream不包含抽象方法。我建议 GetSizeSetSizeReadWriteSeek 应该真正被声明为抽象。我怀疑如果今天设计该类,那么它们将被声明为抽象,并且很可能它们不是出于历史原因。

实例化TStream是缺乏Delphi RTL经验的程序员所犯的一个非常常见的错误。一旦错误犯了几次,通常就会吸取教训。不幸的是,系统没有提供简单的方法来标记此错误。每个新程序员都必须经历艰苦的学习。

关于德尔福tstream : strange behaviour on create,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44697836/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com