Delphi 德尔福->;从非类型化参数获取记录类型

Delphi 德尔福->;从非类型化参数获取记录类型,delphi,delphi-xe2,Delphi,Delphi Xe2,我使用的是DelphiXe2。 作为Delphi不支持对记录类型的前向引用的一种解决方法,我开始使用非类型化参数 如何获取非类型化参数的类型 procedure TSomeRecord.TransformBy(const AUntypedParam); begin // how can I ensure that **AUntypedParam** is of a specific record type? 我需要确保AUntypedParam是特定类型的,否则应该抛出异常。 谢谢大家! 如何

我使用的是DelphiXe2。 作为Delphi不支持对记录类型的前向引用的一种解决方法,我开始使用非类型化参数

如何获取非类型化参数的类型

procedure TSomeRecord.TransformBy(const AUntypedParam);
begin
// how can I ensure that **AUntypedParam** is of a specific record type?
我需要确保AUntypedParam是特定类型的,否则应该抛出异常。 谢谢大家!

如何确保
AUntypedParam
属于特定的记录类型

你不能。这几乎就是非类型化参数的操作方式。当你对编译器说,不要检查实际参数的类型时,编译器会根据你的意思让你传递任何你喜欢的东西。你不能两全其美



@LURD敏锐地指出,您可以使用记录帮助程序来解决这个编译器限制。我真的希望Embarcadero的人能读到关于堆栈溢出的问题。由于扩展记录的限制,这一定是过去一周内我们第三次或第四次遇到问题。

在记录中添加签名。顺便说一句,应该可以通过使用记录助手来避免无法声明转发记录引用。是的,记录助手是我解决此问题的方式。是的,事实上,记录帮助器确实可以工作,但有两个缺点:1)您需要引用另一个单元(使用帮助器方法)2)XE2 Intellisense不拾取帮助器方法。根据David对另一个问题的回答,XE5似乎解决了这个问题。最后,我想我也会坚持使用helper方法。@DavidHeffernan非常感谢pastebin。现在很清楚如何组织代码。