如何检查 Pascal 中对象的有效方法名称?
How do I check valid method name for an Object in Pascal?
我有一个 class(角色)继承了 classes(士兵、军医等),具有特定的游戏相关方法。例如。射击或治疗。
我想要它,以便用户可以输入 Heal,例如,程序可以检查他们有什么类型的字符,从而查看它是否是该对象中方法的有效名称。
我知道用其他语言也可以,但不知道如何用 Pascal 来实现。它必须在 Free Pascal 和 Delphi 中工作。谢谢
您不需要能够检查方法名称的有效性来执行此操作,如果不这样做可能更可取。
您可以使用 RTTI 检查方法名称,但在 FreePascal 中的实现方式与 Delphi 有所不同(特别是对于扩展的 RTTI)。
但是,实现您自己的查找机制以在某种字典中解析游戏中的实体名称、属性和动词会简单得多。这在 FP 和 Delphi 中都是微不足道的,并且与使用的编译器无关。它还将允许最终用户使用的名称独立于代码中使用的名称,这将更容易国际化等。它还可以避免如果游戏内标识符包含不允许的字符会出现的问题在 Pascal 标识符中(例如 space、重音字符或其他)。
PS:你没有问这个,但是......如果我正在考虑编写任何大小的文字游戏,我会认真考虑将其作为Delphi的混合体Prolog:用于 gui 的 Delpi 和 Prolog 是一种更简单的语言,用于编写游戏中的动作、对象和规则,并且有一个特定的实现,Amzi Prolog,它具有非常丰富的接口,用于将 Prolog 引擎与 Delphi - 参见 https://www.amzi.com/#apls。 Amzi以前是商业的,现在是PD,fwiw。
我有一个 class(角色)继承了 classes(士兵、军医等),具有特定的游戏相关方法。例如。射击或治疗。
我想要它,以便用户可以输入 Heal,例如,程序可以检查他们有什么类型的字符,从而查看它是否是该对象中方法的有效名称。
我知道用其他语言也可以,但不知道如何用 Pascal 来实现。它必须在 Free Pascal 和 Delphi 中工作。谢谢
您不需要能够检查方法名称的有效性来执行此操作,如果不这样做可能更可取。
您可以使用 RTTI 检查方法名称,但在 FreePascal 中的实现方式与 Delphi 有所不同(特别是对于扩展的 RTTI)。
但是,实现您自己的查找机制以在某种字典中解析游戏中的实体名称、属性和动词会简单得多。这在 FP 和 Delphi 中都是微不足道的,并且与使用的编译器无关。它还将允许最终用户使用的名称独立于代码中使用的名称,这将更容易国际化等。它还可以避免如果游戏内标识符包含不允许的字符会出现的问题在 Pascal 标识符中(例如 space、重音字符或其他)。
PS:你没有问这个,但是......如果我正在考虑编写任何大小的文字游戏,我会认真考虑将其作为Delphi的混合体Prolog:用于 gui 的 Delpi 和 Prolog 是一种更简单的语言,用于编写游戏中的动作、对象和规则,并且有一个特定的实现,Amzi Prolog,它具有非常丰富的接口,用于将 Prolog 引擎与 Delphi - 参见 https://www.amzi.com/#apls。 Amzi以前是商业的,现在是PD,fwiw。