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