Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.12;
Скачать: CL | DM;

Вниз

помогите с 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.014 c
6-35399
adress
2002-05-30 18:47
2002.08.12
POSTDATA = ????????????????????????????????????? ЧТО ЭТО ТАКОЕ?


3-35217
zavisalych
2002-07-24 09:45
2002.08.12
баг в VCL? не понимает множественных полей в KeyFields


4-35507
Валет
2002-06-06 16:07
2002.08.12
как определить координаты курсора ?


6-35400
SevaPetrov
2002-05-30 02:08
2002.08.12
E-mail (TidSMTP)


1-35346
Арсентьев
2002-07-30 12:36
2002.08.12
изменить цвет