Форум: "Основная";
Текущий архив: 2002.08.12;
Скачать: [xml.tar.bz2];
Внизпомогите с GetPropValue() Найти похожие ветки
← →
Starkom (2002-07-30 07:49) [0]Есть такой код
Result:=IntToStr(Integer(GetPropValue(FComponents[0], FPropName,True)));
Где точно незакосяченый FComponents[0] типа TMyField (наследник TPersistent), FPropName тоже нормальная строка с именем свойства, которое точно есть.
Но такой код выдает всякую абракадабру.
Может кто подскажет возможную причину?
Такая же строка прекрасно работает для других свойств у многих других классов (например TFont или собственных классов).
← →
Eugene Lachinov (2002-07-30 08:28) [1]А function GetOrdProp(Instance: TObject; const PropName: string) : LongInt, что выдает ?
← →
Starkom (2002-07-30 08:34) [2]GetOrdProp(Instance, PropInfo) то как раз лажу и выдает, при том что Instance = FComponents[0], PropInfo вроде нормальный (там есть PropInfo^.Index и Default вроде отрицательные, но у других классов эти поля тоже бывают отрицательными, а функция выдает нормальный результат)
← →
Юрий Зотов (2002-07-30 08:56) [3]Искомое свойство - published?
← →
Starkom (2002-07-30 09:02) [4]да, конечно.
для того он и наследутся от TPersistent.
property MyField:integer read FMyField write FMyField;
← →
Программист на С++ (2002-07-30 09:18) [5]А в каком контексте этот код используется ?
← →
Starkom (2002-07-30 09:22) [6]Пишется для небольшой системки свое подобие инспектора объектов.
← →
Программист на С++ (2002-07-30 09:31) [7]FComponents[0] и наследник от TPersistent это совместимо ?
← →
Starkom (2002-07-30 09:40) [8]мда, похоже, что проблема вовсе не в GetPropValue
окно Watch -
TObject(FComponents[0]).ClassName = "TMyField", но
TMyField(FComponents[0]) = inaccesible value, при том что
TMyField(FComponents[0]).Pseudo (есть там такое поле) выдает правильный результат.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.08.12;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c