Главная страница
    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
3-72644
Russko
2003-12-26 13:15
2004.01.23
Ограничение по количеству символов в ячейке?


1-72739
volser
2004-01-11 00:48
2004.01.23
Закрытие всех форм приложения


4-72987
Amirka
2003-11-19 08:29
2004.01.23
Как убрать атрибут readonly у папки и всех файлоы


7-72955
Magical
2003-11-07 06:57
2004.01.23
Проблемы с получением SID


1-72729
Sting
2004-01-11 04:04
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский