2014-11-27 1 views
1

에 대한 포인터를 설정합니다 사용 FPointer RTTI :사용 RTTIField.SetValue 내가 타입을 가지고 필드

procedure SetControlPointer(pControl : TControlPointer); 
[...] 
RTTIField.SetValue(Self,pControl); 

컴파일러는 말한다 [DCC32 오류]에서 MyUnit (XXX) : E2010 호환되지 않는 유형 : 'TValue'와 'TControlPointer'

아이디어가 있으십니까?

는 오류가 단순히 RTTIField.SetValueTValue을 통과 할 것으로 예상하고 있음을 말하고 당신에게

+0

내가 SetControlPointer에 (pControl : TControl의)에 TControl의를 통과 할 수 쓸 수 있습니다 및 SetValue는 (자체, @의 pControl을). 그러나 전체 TControl을 전달하는 것이 좋은 아이디어인지는 모르겠다. –

+0

TControl (및 모든 개체)이 포인터입니다. 포인터를 포인터로 사용해야합니까? – MBo

+0

@MBo 개체의 필드를 수정하려는 경우가 있습니다. –

답변

0

감사드립니다. 그래서 나는 당신이 당신이 RTTIField.SetValue에 전달 무엇 TValue

TValue.From<TControlPointer>(Self.pControl) 

에 포인터를 둘 필요가 같아요.

당신은 아마 컴파일러가 타입을 추론하고 간단하게

TValue.From(Self.pControl) 
+0

작동합니다! 어떻게 내 TControlPointer RTTIField.GetValue (자기)에서 돌아 오지? –

+0

'TValue '를 전달하는'AsType (...)'를 사용하십시오. TValue는 RTTI의 근본입니다. 당신은 그것을 배워야합니다. –

+0

TControlPointer.From (RTTIField.GetValue (Self))이 작동하지 않습니다. –

관련 문제