GetPropInfo в Builder
От: Vladimir Kim Россия http://nedrosom.taiso.ru
Дата: 15.05.04 20:11
Оценка:
Всем добрый вечер!

Пытаюсь разобраться с RTTI. Есть примеры на Delphi, а мне нужно заставить это дело работать на Builder... В общем столкнулся с проблемой — Builder при компиляции спотыкается на функции GetPropInfo

Грубо говоря, есть такой кусочек пример на Delphi

//  Hапpимеp следующий код устанавливает свойство Color у всех компонентов фоpмы,
//котоpые этим свойством pасполагают:

  for i:=0 to FormX.ComponentCount-1 do
  begin
    PropInfo := GetPropInfo( FormX.Components[i].ClassInfo, 'Color');
    if PropInfo <> nil then
      SetOrdProp( FormX.Components[i], PropInfo, clGreen );
  end;


переписываю это дело на Builder так:

    for (int i=0; i<ComponentCount; i++)
    {
        PPropInfo PropInfo = GetPropInfo(Components[i]->ClassInfo(), "Color");
        if (PropInfo) SetOrdProp(Components[i], PropInfo, clGreen);
    }


FormX упускаю, т.к. этот код вызываю в обрабочкие события кнопки, которая лежит на тестовой форме.

Как я уже сказал, компилятор спотыкается на функции GetPropInfo. Посмотрел хелп — там выходит справка на что-то близкое по теме, но такого вида

Typinfo::PPropInfo __fastcall GetPropInfo(void);

С чем это едят и к чему прикручивать, мозги ответ не дали — злонамеренно повисли...

Пожалуйста просвятите, наставьте на путь света и истины!
Заранее чертовски благодарен!

С уважением, Владимир Ким
www.nedrosom.taiso.ru

PS: TypInfo.hpp в include вставил
PS2: Черт, первый час ночи пошел — безбожно жру колбасу — кхм..., до гастрита осталось N00 дней...
PS3: Вот интересно, программисты по ночам спят?
Re: GetPropInfo в Builder
От: AlexandrN Россия  
Дата: 16.05.04 12:11
Оценка:
Здравствуйте, Vladimir Kim, Вы писали:

VK>Всем добрый вечер!


VK>Пытаюсь разобраться с RTTI. Есть примеры на Delphi, а мне нужно заставить это дело работать на Builder... В общем столкнулся с проблемой — Builder при компиляции спотыкается на функции GetPropInfo

#include <typinfo.hpp>
...
for (int i = 0; i < ComponentCount; i++)
{
  // Из "typinfo.hpp"
  // extern PACKAGE PPropInfo __fastcall GetPropInfo(PTypeInfo TypeInfo, const AnsiString PropName)/* overload */;
  // значит надо использовать так
  PPropInfo PropInfo = Typinfo::GetPropInfo((PTypeInfo)Components[i]->ClassInfo(), "Color");
  if ( PropInfo ) SetOrdProp(Components[i], PropInfo, clGreen);
}
С уважением.
AlexandrN
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.