gpt4 book ai didi

delphi - "unused"类可以在Delphi XE中使用吗

转载 作者:行者123 更新时间:2023-12-03 14:51:19 25 4
gpt4 key购买 nike

我正在使用 Delphi XE、Windows 7。

在应用程序中,我想启用不同的报告类型供用户选择。为此,我有 1 个基本报告类和每个报告类型(xml、csv、ppt 等)的子类。

{Just an illustrating example}
TBaseReport = class
public
constructor Create;
procedure GenerateReport; virtual; abstract;
class function ReportType: string; virtual; abstract;
end;

T*Report = class(TBaseReport);
//Etcetera.

我想要做的是使用 Rtti 检测所有报告类并列出它们的 ReportType。之后,我想使用 Rtti 创建所选报告类的实例并调用GenerateReport。总而言之,实现这一点并不是太难。

但是有一个主要缺点:我从来没有对降序类的使用进行硬编码,因此代码不会包含在可执行文件中。

是否有一种合适的方法来强制链接器/编译器包含这些类?

一个(丑陋的)解决方法是在初始化部分模拟报告的使用,但我不想这样做。更好的解决方案是使基类持久化并调用“RegisterClass(T*Report);”在初始化部分。它有效,但我认为没有任何其他需要让它们持久存在,所以再说一次,我宁愿不这样做。另一方面,也许这是唯一的方法?

提前致谢。

最佳答案

您可以创建自己的 RegisterClass 版本。类似 RegisterReportClass 之类的东西。在内部,您可以保留自己的可以使用的报告类列表。您的注册函数将采用 TBaseReport 类类型 - 不需要 TPersistent。

您的 RegisterReportClass 方法应在初始化部分中调用,以确保包含这些类。

如果您查看图形单元,您可以看到 TFileFormatsList = class(TList)。该类用于保存不同的图形类型,并且可以用作创建您自己的 TReportFormatsList 的示例。 Delphi 使用静态函数 TPicture.RegisterFileFormat 将项目添加到其内部列表中。

关于delphi - "unused"类可以在Delphi XE中使用吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12547913/

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