수색…


소개

Delphi는 10 년 전에 RTTI (Runtime Type Information)를 제공했습니다. 그러나 오늘날에도 많은 개발자들이 위험과 이점을 완전히 인식하지 못하고 있습니다.

간단히 말해, 런타임 유형 정보는 런타임에 메모리에 설정된 객체의 데이터 유형에 대한 정보입니다.

RTTI는 객체의 유형이 특정 클래스 나 그 자손 중 하나인지 여부를 결정할 수있는 방법을 제공합니다.

비고

델피에서의 RTTI - EXPLAINED

델파이런타임 유형 정보 - 당신을 위해 무엇이든지 할 수 있습니까? Brian Long의 기사는 Delphi의 RTTI 기능에 대한 훌륭한 소개를 제공합니다. Brian은 Delphi에서의 RTTI 지원이 디자인 타임 환경을 허용하기 위해 최우선 적으로 추가되었지만 개발자는 특정 시간 단축 환경을 활용하여 특정 코드를 단순화 할 수 있다고 설명합니다. 또한이 기사에서는 RTTI 클래스에 대한 훌륭한 개요와 몇 가지 예를 제공합니다.

예 : 임의의 속성 읽기 및 쓰기, 공통 조상이없는 공통 속성, 한 구성 요소에서 다른 구성 요소로 속성 복사 등

기본 클래스 정보

이 예제에서는 ClassTypeClassParent 속성을 사용하여 구성 요소의 조상을 얻는 방법을 보여줍니다. 단추 Button1: TButton 과 목록 상자 ListBox1: TListBoxTForm1 양식에 사용 TForm1 .

사용자가 단추를 클릭하면 버튼 클래스의 이름과 상위 클래스의 이름이 목록 상자에 추가됩니다.

procedure TForm1.Button1Click(Sender: TObject) ;
var
  ClassRef: TClass;
begin
   ListBox1.Clear;
   ClassRef := Sender.ClassType;
   while ClassRef <> nil do
   begin
     ListBox1.Items.Add(ClassRef.ClassName) ;
     ClassRef := ClassRef.ClassParent;
   end;
end;

목록 상자에는 사용자가 단추를 클릭 한 후 다음 문자열이 포함됩니다.

  • TButton
  • TButtonControl
  • TWinControl
  • TControl
  • TComponent
  • TP 지속
  • 주제


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow