gpt4 book ai didi

delphi - 如何在运行时获取项目中定义的类列表?

转载 作者:行者123 更新时间:2023-12-03 15:48:50 32 4
gpt4 key购买 nike

我想将当前项目中的所有类加载到 TList 中。如果我像普通文件一样读取 dpr 文件,它将仅返回字符串。我想获取 dpr 文件中定义的所有类及其名称。有人知道怎么做吗?

最佳答案

在 Delphi IDE 中,所有类都在 .dcu 文件中可用,对应于每个 .pas 文件。这些 .dcu 文件具有专有的二进制演变格式,因此不能在 IDE 之外使用。

在程序执行时,在 exe 文件中,没有所有现有类的列表。您可以使用 RTTI 函数检索有关已知类的信息(请参阅 TypInfo.pasthe Embarcadero documentation 中所述的相关类)。因此,在运行时,您只能从给定的类中检索信息:您可以使用例如anObject.ClassNameanObject.ClassType 方法。

但我怀疑您想从项目的源代码中检索项目中定义的所有类。为此,您需要一个源代码解析器,它将从 .pas 文件中提取逻辑。简而言之,解析器将读取 .dpr,然后读取所有必需的 .pas 文件源代码,解释对象 pascal 类型定义,并创建单元、类、方法和属性的列表。有几个解析器:例如参见 PasDoc或者我们嵌入 SynProject 的版本.

附加说明 - 详细列表:如果在编译期间生成 .map 文件,则此文本文件将包含可执行文件的所有符号名称,包括类。您必须解析它,但不会有太多信息需要处理,因为没有简单的方法可以猜测每个符号是类还是记录,或者关于类继承或属性......这.map 用于执行调试,而不是 RTTI。

关于delphi - 如何在运行时获取项目中定义的类列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7740248/

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