Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.01.23;
Скачать: [xml.tar.bz2];

Вниз

Проблема с 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.007 c
1-72732
Wolverin
2004-01-05 15:15
2004.01.23
Глюки TImage


3-72669
BK
2003-12-25 15:20
2004.01.23
Какой запрос?


3-72628
Zemal
2003-12-26 13:21
2004.01.23
Проблема с подбором DBGrid а под .


14-72906
имя
2004-01-01 18:41
2004.01.23
Кому нужена бесплатнаябиблиотека для поддрежки новор. скинов ???


14-72921
Golon
2003-12-31 19:54
2004.01.23
Убить Билла





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский