Итерация переменных-членов - PullRequest
6 голосов
/ 17 декабря 2010

Есть ли способ перебирать переменные-члены объекта в D2010, не зная, какие они заранее?

1 Ответ

3 голосов
/ 17 декабря 2010

Да, если вы используете Delphi 2010 или более позднюю версию.Вы можете использовать расширенный RTTI для получения информации о полях, методах и свойствах объекта.Простая версия:

procedure GetInfo(obj: TObject);
var
  context: TRttiContext;
  rType: TRttiType;
  field: TRttiField;
  method: TRttiMethod;
  prop: TRttiProperty;
begin
  context := TRttiContext.Create;
  rType := context.GetType(obj.ClassType);
  for field in rType.GetFields do
    ;//do something here
  for method in rType.GetMethods do
    ;//do something here
  for prop in rType.GetProperties do
    ;//do something here
end;

Необходимые объекты можно найти в модуле RTTI.

В более ранних версиях Delphi есть некоторые более ограниченные RTTI, которые могут дать вам некоторую информацию о некоторыхсвойства и методы, но он не может сделать все это так много.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...