![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 18.03.2011
Сообщений: 27
|
![]()
Допустим есть некоторое свойство
Код:
Код:
Кто знает, что это может быть? Вынужденно заводу однотипную переменную, в нее пишу значение Prop1, передаю в функцию, читаю из нее ответ обратно в Prop1. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
ну, дык, правильно ругается. Ведь фактически Prop1 сводится к чтению FProp1 (если нужно значение Prop1) и изменением FProp2 (если идёт изменение Prop1).
И Вы абсолютно правильно нашли выход из ситуации (в общем случае!) Но, разумеется, могут быть и другие варианты. Но они зависят от того, что вы делаете и зачем изменяете параметр в функции. По хорошему, если функция должна изменить параметер, то это должна быть не функция, а метод класса. А ему FProp1 доступна по определению! "по плохому", можно сделать публичной Fprop1 и передавать именно эту переменную в функцию (так делать категорически не рекомендую! Пишу только в рамках ознакомления) ну и ещё вариант. можно передавать в функцию целиком объект, тогда внутри функции будет возможно изменять Prop1: Код:
p.s. но не вижу ничего плохого в том способе с добавочной переменной, который Вы "вынужденно" используете. |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 18.03.2011
Сообщений: 27
|
![]()
Спасибо!
Передается в COM объект. Публичной не сделать. В принципе, можно конечно отказаться от Property и делать все на переменных класса. Я просто наивно полагал, что Проперти можно воспринимать как переименованную переменную. Естественно в случае, когда она не читается и/или не пишется функциями. |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 26.07.2009
Сообщений: 489
|
![]() Код:
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
|
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 13.08.2009
Сообщений: 2,581
|
![]()
Свойство <> поле. Оно его имитирует, но им не является.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
|
![]() |
![]() |
![]() |
#6 | |
Заблокирован
Регистрация: 27.05.2010
Сообщений: 1,099
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 18.03.2011
Сообщений: 27
|
![]()
НУ как я понимаю, COM сервер не видит контекста вызывающего объекта. Т.е. ее можно сделать публичной для модуля, в котором она находится. В COM-Сервер все равно она передается как параметр функции описанной в реализуемом интерфейсе.
Хотя, опять таки, возможно мы немного друг друга недопонимаем... в принципе, можно уйти от свойств к переменной. ее и передавать напрямую... тогда, вместо публичного свойства, будет публичная переменная... Последний раз редактировалось sdsfy; 21.09.2011 в 19:16. |
![]() |
![]() |
![]() |
#8 | |
Заблокирован
Регистрация: 27.05.2010
Сообщений: 1,099
|
![]() Цитата:
Не нужкн. Все что ему нужно - ссылка на объект и инф-ция об имени св-ва, к которому ему следует обратиться. Прямой путь к реализации IDispatch |
|
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 18.03.2011
Сообщений: 27
|
![]() |
![]() |
![]() |
![]() |
#10 | |
Заблокирован
Регистрация: 27.05.2010
Сообщений: 1,099
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Notice: Trying to get property of non-object. для property of static property | Jakethefish | PHP | 8 | 16.08.2011 16:09 |
Передача списка указателей (TList) как параметр в dll | sneksnek2006 | Общие вопросы C/C++ | 1 | 28.10.2010 11:33 |
Как передать в функцию параметр разных типов | borispnz | Общие вопросы Delphi | 5 | 06.02.2010 08:37 |
Передача динамического массива как параметр ф-ции | kurdt | Общие вопросы Delphi | 2 | 26.04.2009 17:35 |
Передача компонента как параметра в функцию | hayhay | Microsoft Office Excel | 1 | 11.03.2008 15:53 |