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

Вниз

Проблема с GetPropValue   Найти похожие ветки 

 
Starkom ©   (2004-01-12 13:21) [0]

В проекте юзаем такую конструкцию:
MyVar:=TMyVar(Pointer(StrToInt(GetPropValue(lala,"Var"))));
Все работает корректно на машинах разработчиков. А вот на машинах юзеров (голая винда и наша система), иногда выскакивает ошибка конвертации строки в инт. Причем иногда очень часто. Непонятно, из-за чего это происходит. Может, кто сталкивался с такой проблемой?


 
Sandman25 ©   (2004-01-12 13:29) [1]

Может, получается StrToInt("")?


 
Starkom ©   (2004-01-12 13:32) [2]

2 SandMan: Понятно, что так и получается! Весь вопрос - почему?
Потому что lala и его поле Var точно инициализированы. И почему это зависит от машины. Может bpl"ки какие-нить надо к системе добавлять?


 
Sandman25 ©   (2004-01-12 13:35) [3]

[2] Starkom © (12.01.04 13:32)

Приведите точный код.


 
Starkom ©   (2004-01-12 14:04) [4]

Тебе прислать 10 мегов исходников? :) Смысл то и так ясен. Есть объект и вытаскиваем значение его поля с помощью GetPropValue. На наших машинах (разработчиков) все работает корректно. А на юзерских иногда глючит.


 
MBo ©   (2004-01-12 14:12) [5]

Программа компилируется только у вас?
(это насчет {$M+})


 
ssk   (2004-01-12 14:15) [6]

>ошибка конвертации строки в инт

может DecimalSeparator в вашей программе где-то немного глюкавит?


 
Starkom ©   (2004-01-12 14:28) [7]

2 MBo: TMyVar наследован от TPersistent. Или M+ должен стоять у класса объекта lala?


 
MBo ©   (2004-01-12 14:37) [8]

>Или M+ должен стоять у класса объекта lala?
Да, должен. Это не наследник TPersistent?


 
Starkom ©   (2004-01-12 14:43) [9]

2 MBo: Так у меня перед каждый вызовом GetPropValue стоит проверка - if isPublishedProp(lala,"Var") then ...
Разве этого недостаточно?


 
MBo ©   (2004-01-12 14:47) [10]

>MyVar:=TMyVar(Pointer(StrToInt(GetPropValue(lala,"Var"))));
можно поподробнее - зачем понадобилась такая экзотика, ведь многократное преобразование/кастинг RTTI-вариант-строка-целое-указатель-объект чревато...


 
Starkom ©   (2004-01-12 14:58) [11]

Есть куча всяких весьма неоднородных классов - видимые компоненты, невидимые компоненты, просто служебные классы. И у них всех может быть св-во "Var". Вот его то и требуется вытаскивать. Как сделать по-другому, если приходит список объектов всевозможных классов, у которых надо вытащить это св-во, даже не зная - есть оно в объекте или нет? Причем, огромный вложенный if по класснейму тоже не подходит, по конструктивным соображениям.


 
MBo ©   (2004-01-12 15:11) [12]

Не очень понятно пока.
Может, причина в том, что свойство пустое, т.е. не присвоено?


 
Erik ©   (2004-01-12 15:20) [13]

Лучше сделать общего предка и у него поставить необходимые свойства. А все остальные классы наследовать от него. Придется конечно забить кучу методов TPersistent и пр.. так, что возможно это не вариант.
Можно еще использовать Val(GetPropValue(lala,"Var"), V, Code);
покрайней мере exception давать небудет.



Страницы: 1 вся ветка

Текущий архив: 2004.01.23;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.016 c
1-72794
-=MAK=-
2004-01-14 11:20
2004.01.23
Как спрятать чужое окно?


4-72968
DillerXX
2003-11-18 20:15
2004.01.23
Пищалка


1-72799
Прямой
2004-01-13 04:09
2004.01.23
Убиваю поток, а ресурсы не освобождаются.


1-72783
Broot
2004-01-14 09:48
2004.01.23
Версия exe файла


11-72698
AlexE
2003-05-05 23:36
2004.01.23
Аналог TPageControl в KOL