2013-10-14 2 views
2

Я использую Delphi XE2. В качестве обходного пути для Delphi, не поддерживающего прямые ссылки на типы записей, я начал использовать нетипизированные параметры.Delphi -> тип записи из нетипизированного параметра

Как я могу получить Тип нетипизированного параметра?

procedure TSomeRecord.TransformBy(const AUntypedParam); 
begin 
// how can I ensure that **AUntypedParam** is of a specific record type? 

мне нужно, чтобы убедиться, что AUntypedParam имеет определенного типа, в противном случае исключение должно быть брошено. Спасибо!

+0

Добавить подпись в свои записи. –

+0

BTW, должно быть возможно обойти неспособность объявить ссылки на прямую запись с помощью помощников записи. –

+0

Да, помощники записи - это то, как я обошел эту проблему. –

ответ

2

Как я могу гарантировать, что AUntypedParam относится к определенному типу записи?

Вы не можете. Это в значительной степени modus operandi нетипизированных параметров. Когда вы говорите компилятору, не проверяйте тип фактического параметра, компилятор берет вас под ваше слово и позволяет передавать все, что вам нравится. Вы не можете иметь это в обоих направлениях.


@LURD остро указывает, что вы можете использовать помощники записи, чтобы обойти это ограничение компилятора. Я надеюсь, что кто-нибудь из Embarcadero прочитает вопросы о переполнении стека. Это должно быть в третий или четвертый раз на прошлой неделе, что у нас возник вопрос из-за ограничений расширенных записей.

Смежные вопросы