【问题标题】:How do I check valid method name for an Object in Pascal?如何在 Pascal 中检查对象的有效方法名称?
【发布时间】:2020-04-15 13:43:37
【问题描述】:

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

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

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

【问题讨论】:

  • 为什么您认为需要检查方法名称的有效性才能执行此操作?您可以使用 RTTI 来实现,但在 FreePascal 中的实现方式与在 Delphi 中的实现方式有所不同(特别是对于扩展的 RTTI)。实现自己的查找机制来解析某种字典中的游戏属性和动词会更直接。这在 FP 和 Delphi 中都是微不足道的,并且与使用的编译器无关。它还将允许最终用户使用的名称独立于代码中使用的名称,这将更容易国际化等?
  • 谢谢!这与满足项目规范一样重要。我的直觉反应是我最好在我的代码中以不同的方式处理这个问题,希望确保没有简单的解决方案。谢谢!!
  • 很高兴它有帮助 - 我已将其转换为答案。

标签: class object methods pascal


【解决方案1】:

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

您可以使用 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。

【讨论】:

    猜你喜欢
    • 2011-03-01
    • 1970-01-01
    • 2010-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多