2014-02-22 1 views
0

TObjectTarget2이 포인터는 TLabel입니다.이 포인터에서 Name 속성을 얻고 싶습니다. 따라서 나는이포인터 멤버 얻기

Procedure TGetName() 
var 
    Item : TLabel; 
Begin 
    if Target2 is TLabel then 
    begin 
    Item := Target2; 
    if Item.Name := 'SomeName' then 
     begin 
     .... 
     dosomething(); 
     end; 
    end; 
end; 

을하지만 Item 지금 포인터에 대한 포인터가 될 가지고 무의미한 것 같다하지만 내가 할 때

Procedure TGetName() 
Begin 
    if Target2 is TLabel then 
    begin 
     if Target2.Name := 'SomeName' then 
     begin 
      .... 
     dosomething(); 
     end; 
    end; 
end; 

을 나는 그 이름이 Target2의 구성원이 아닌 errror 얻을. 따라서 포인터에 또 다른 포인터를 만들지 않고 이걸 어떻게 접근합니까? Target2?

+2

시도해보십시오. (Target2 as TLabel) .Name : = 'SomeName'' – Iqbal

+0

당신이 말하는 포인터는 무엇입니까 ?? – MBo

+0

감사합니다 lqbal 그 작품, @ MBo 질문에 두 포인터에 대해 얘기하고 있었지만, 오직 1 싶었어.'Target2' (원했어)'항목'(내가 싫어) –

답변

3

캐스팅 만하면됩니다. 그렇지 않으면 is를 사용하여 확인

var 
    Lbl: TLabel; 
.... 
Lbl := Target2 as TLabel; 

다음 검사되지 않은 캐스트 괜찮 :

if Target2 is TLabel then 
begin 
    Lbl := TLabel(Target2); 
    .... 

당신은 파괴 할 필요가 없습니다 당신이 주장 준비가되어있는 경우 Target2TLabel 다음 체크 캐스트를 사용하는 것입니다 Lbl은 다른 사람이 소유 한 개체에 대한 참조 일 뿐이므로