Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как получить список свойств класса [D7, Win95/98, WinME, NT4, Win2k, WinXP]


aleshap ©   (2004-10-12 10:16:00) 

Уважаемые мастера!
Каким образом можно получить список всех свойств класса из области public ?
При использовании RTTIполучается получить доступ только к publishedсвойствам.

var TD:PTypeData;  
   List:PPropList;
   i,N:Integer;
begin
  TD:=GetTypeData(CInfo.ClassInfo);
  N:=TD.PropCount;
  if N<=0 then exit;
  GetMem(List,SizeOf(PPropInfo)*N);
try
  GetPropInfos(TObject(TD).ClassInfo ,List);
  for i:=0 to N-1 do begin
    Memo.Lines.Add(List[i].Name);
  .....


Ведь Delphi же их как то получает?
Спасибо


aleshap   (2004-10-12 10:53:00) [1]

Да ладно забудьте - то, что вы предлагаете - "овчинка выделки не стоит"


TUser   (2004-10-12 10:50:00) [2]

Тогда никак. Почти никак - можно DeDe'й 'декомпилировать' и посмотреть.


aleshap   (2004-10-12 10:49:00) [3]

тогда проблема в том что исходников может и не быть....


Sapersky   (2004-10-12 10:47:00) [4]

Каким образом можно получить список всех свойств класса из области public?

Распарзить исходник :)
Смех смехом, но я делал нечто подобное, правда, для записей... (для автоматического чтения/сохранения в ini).
Правда, парзер кривоват получился, работает не очень надёжно, ограничений на вид исходника масса... зато не надо писать много-много ini.WriteString(bla-bla-bla) :)


TUser   (2004-10-12 10:38:00) [5]

published - это и есть такой механизм, который описывает информацию доступную, через RTTI. Все что не-published через RTTI недоступно (в смысле - все свойства класса).

Delphi - у него есть компилятор, он исходники читает.


aleshap   (2004-10-12 10:34:00) [6]

НИКАК!
Все вопрос снят! Спасибо за участие


Наверх

Титульная страница Поиск, карта сайта Написать письмо