2015-02-05 13 views
3

데이터에 RTTI 모드로 작업을 수행하는 함수를 작성해야합니다. 그 중 어떤 형식인지는 알 수 없습니다. 는이 같은 함수 작성하려고 : 표현을 TypeInfo(T) 사용하는 경우 그 유형 매개 변수 TypeIdentifiersee the snapshot"TypeIdentifier"의 정의는 어디에 있습니까

로 기대로

function doSomething (T: TypeIdentifier): Boolean;

을하지만 컴파일 할 때 오류가 발생하기 때문에 형 TypeIdentifier하지 인정 받았다.
누군가가 내가 런타임에만 유형을 알고있는 데이터 유형을 보내려면 어떻게해야하는지 설명 할 수 있습니까?
가용성에 감사드립니다.
엔조

답변

3

TypeInfo은 컴파일러 마술을 사용하는 기능입니다. 컴파일러는 런타임 라이브러리의 일부가 아닌 함수를 구현하는 코드를 생성합니다.

당신은 그런 마법에 접근 할 수 없습니다. TypeInfo과 같은 형식 식별자를 허용하는 함수를 만들 수 없습니다. 따라서 TypeInfo이 반환하는 함수를 형식 정보로의 포인터 인 PTypeInfo으로 가져와야합니다.

이 같은 함수를 호출 할 것 :

DoSomething(TypeInfo(SomeTypeIdentifier)); 

지금 기술적으로, 당신은 TypeInfo 유형 Pointer의 값을 반환하는 것을 알 수 있습니다. PTypeInfo이 다른 단위로 정의 되었기 때문에 TypInfoSystem 모든 내장 함수가 정의 된 장치는 TypInfo을 사용할 수 없기 때문입니다. 그러나 위에 링크 된 문서에 명시된 바와 같이 TypeInfoTTypeInfo에 대한 포인터를 반환합니다.

+0

감사합니다. David.I 제안을 적용하겠습니다. :-) –

+0

나는 그것을 시도하고 완벽하게 작동합니다 ... 다시 한번 감사드립니다! –