Szukaj…


Wprowadzenie

Delphi dostarczyło informacje o typie środowiska wykonawczego (RTTI) ponad dziesięć lat temu. Jednak nawet dziś wielu programistów nie jest w pełni świadomych ryzyka i korzyści.

Krótko mówiąc, informacje o typie środowiska wykonawczego to informacje o typie danych obiektu ustawionym w pamięci w czasie wykonywania.

RTTI zapewnia sposób ustalenia, czy typ obiektu jest typu określonej klasy czy jednego z jego potomków.

Uwagi

RTTI IN DELPHI - WYJAŚNIENIE

Informacje o typie wykonawczym w Delphi - czy może coś dla ciebie zrobić? artykuł Briana Longa stanowi świetne wprowadzenie do możliwości RTTI Delphi. Brian wyjaśnia, że obsługa RTTI w Delphi została dodana przede wszystkim, aby umożliwić środowisku projektowemu wykonanie swojej pracy, ale programiści mogą również z niego skorzystać, aby osiągnąć pewne uproszczenia kodu. Ten artykuł zawiera także świetny przegląd klas RTTI wraz z kilkoma przykładami.

Przykłady obejmują: odczytywanie i zapisywanie dowolnych właściwości, wspólne właściwości bez wspólnego przodka, kopiowanie właściwości z jednego komponentu do drugiego itp.

Podstawowe informacje o klasie

Ten przykład pokazuje, jak uzyskać pochodzenie komponentu za pomocą właściwości ClassType i ClassParent . Używa przycisku Button1: TButton i pola listy ListBox1: TListBox w formularzu TForm1 .

Gdy użytkownik kliknie przycisk, nazwa klasy przycisku i nazwy jego klas nadrzędnych są dodawane do pola listy.

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;

Pole listy zawiera następujące ciągi znaków po kliknięciu przycisku przez użytkownika:

  • TButton
  • TButtonControl
  • TWinControl
  • TControl
  • TComponent
  • TPersistent
  • TObject


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow