我想从TList中的当前项目加载所有类.如果我像普通文件一样读取dpr文件,它将只返回字符串.我想获得dpr文件中定义的所有类及其名称.有人知道怎么做吗?
在Delphi IDE中,所有类都在.dcu文件中,对应于每个.pas文件.那些.dcu文件具有专有的二进制演进格式,因此不能在IDE之外使用.
在程序执行时,在exe文件中,没有所有现有类的列表.您可以使用RTTI函数检索有关已知类的信息(请参阅Embarcadero文档中TypInfo.pas所述的亲属).因此,在运行时,您只需从给定的类中检索信息:您可以使用eg 或methods.anObject.ClassNameanObject.ClassType
但我怀疑你想从源代码中检索项目中定义的所有类.为此,您需要一个源代码解析器,它将从.pas文件中提取逻辑.简而言之,解析器将读取.dpr然后所有必需的.pas文件源代码,解释对象pascal类型定义,并创建单元,类,方法和属性的列表.有几个解析器:例如参见PasDoc或我们在SynProject中嵌入的版本.
附加说明 - 有关详尽列表:如果在编译期间生成.map文件,则此文本文件将包含可执行文件的所有符号名称,包括类.你将不得不解析它,但没有太多的信息需要处理,因为没有简单的方法来猜测每个符号是一个类还是一个记录,或者关于类的继承或属性...... .map旨在执行调试,而不是RTTI.