는 델파이 XE3에서 RTTI와 몇 가지 작업을하고있어 지금까지 다음과 같이이 프로 시저를 호출 결과는 :delphi에서 RTTI 사용을 단순화 할 수 있습니까?
procedure MyProc(ARecordInstance : pointer; ARecordType : PTypeInfo);
을 다음과 같이 나는이 루틴을 호출 :
MyProc(@MyRec TypeInfo(TMyRec));
이 모든 것이 정상적으로 작동합니다.
내가 내 절차를 간소화 할 수있을 것을 나에게 발생
procedure MyProc(var ARecord); or procedure MyProc(ARecord : pointer);
내 프로 시저 내 ARecord에서 유형 정보를 얻을 수 있습니다 ..if. 하지만 'ARecord'와 같은 '인스턴스'로 작업하면 TypeInfo는 '유형 식별자가 필요합니다'라는 오류를 표시합니다. 내 레코드에 단일 포인터 참조를 전달하고 그 형식을 추출 할 수있는 방법이 있습니까?
감사
+1 이것은 내가 알아 낸 유일한 방법입니다. 그러나 MyClass .MyProc (MyRec)와 MyProc (MyRec, TypeInfo (TMyRec)) ... 및 일반 버전 간의 더 큰 이점은 더 많은 코드를 생성하며 generics에 대한 Delphi 컴파일러의 불안정성이 있습니다. 그러나 당신은 그것의 가치가 있을지도 모른다 강한 타이핑 체크를 얻을 것이다. –
델파이의 단점에 오신 것을 환영합니다. 이것이 C++ 질문이었을 경우, 컴파일러는 명시 적으로 표현할 필요없이'T'의 값을 자동으로 처리 할 수 있고, 일반적인 코드를 작성하려면'MyProc'를 클래스에 래핑 할 필요가 없습니다 :-) –