首页 > 解决方案 > 如何在 Pascal 中检查对象的有效方法名称?

问题描述

我有一个具有特定游戏相关方法的继承类(士兵、军医等)的类(角色)。例如射击或治疗。

例如,我想要它以便用户可以输入 Heal,并且程序可以检查他们拥有的字符类型,从而查看这是否是该对象中方法的有效名称。

我知道这在其他语言中是可能的,但在 Pascal 中看不到如何做到这一点。它必须在 Free Pascal 和 Delphi 中工作。谢谢

标签: classobjectmethodspascal

解决方案


您不需要能够检查方法名称的有效性来执行此操作,如果您不这样做可能更可取。

您可以使用 RTTI 检查方法名称,但在 FreePascal 中的实现方式与 Delphi 有所不同(特别是对于扩展 RTTI)。

但是,实现您自己的查找机制来解析某种字典中的游戏中实体名称、属性和动词会更加直接。这在 FP 和 Delphi 中都是微不足道的,并且与使用的编译器无关。它还将允许最终用户使用的名称独立于代码中使用的名称,这将更容易国际化等。它还将避免如果游戏中的标识符包含不允许的字符而出现的问题在 Pascal 标识符中(例如空格、重音字符或其他)。

PS:你没有问这个,但是......如果我正在考虑编写任何大小的文本游戏,我会认真考虑将它作为 Prolog 的混合 Delphi:Delpi for the gui 和 Prolog 作为一种更容易的语言在其中对游戏中的动作、对象和规则进行编码,并且有一个特殊的实现,Amzi Prolog,它具有非常丰富的接口,用于将 Prolog 引擎与 Delphi 连接 -请参阅https://www.amzi.com/#apls . Amzi 曾经是商业的,但现在是 PD,fwiw。


推荐阅读