Форум ДИЦ

Пользовательский и Дилерский форум ДИЦ
Текущее время: Вс сен 23, 2018 2:21 am

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Объект из которого был вызван inclass-метод
СообщениеДобавлено: Вт июл 10, 2018 1:12 pm 
Не в сети

Зарегистрирован: Пт июн 29, 2012 12:18 am
Сообщения: 436
Откуда: Москва
Есть inclass-метод, нужно узнать из какого объекта он был вызван, явно передавать через аргумент не подходит т.к. нельзя менять формат вызова (если только аргументом по умолчанию), что бы такое придумать? Аргментом по умолчанию не получается т.к. аргумент = Self не понимает, да если бы и понимал скорей всего передаст класс, а не объект. Как вариант, можно было бы разрешить MethodInfo вызывать в любой процедуре напрямую, где было бы свойство с именем вызвавшего процедуру объект.

_________________
ТБ.Бюджет


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: Объект из которого был вызван inclass-метод
СообщениеДобавлено: Вт июл 10, 2018 5:31 pm 
Не в сети

Зарегистрирован: Пт апр 16, 2004 5:11 pm
Сообщения: 6695
Откуда: OpenFly Soft Technology, Москва
В классе переменные добавить переменную и через нее (внешнюю переменную) передавать.

_________________
www.TurboFlyERP.ru


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: Объект из которого был вызван inclass-метод
СообщениеДобавлено: Вт июл 10, 2018 5:47 pm 
Не в сети

Зарегистрирован: Пт июн 29, 2012 12:18 am
Сообщения: 436
Откуда: Москва
storm писал(а):
В классе переменные добавить переменную и через нее (внешнюю переменную) передавать.

Некрасиво, разумеется, можно сделать. Хочется красиво.
Например так:
Код:
proc Method;
  var obj: Object;
  obj = MethodInfo.CalledFrom;
end;


Либо так:
Код:
proc Method(obj: Object = Caller);
end;

_________________
ТБ.Бюджет


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: Объект из которого был вызван inclass-метод
СообщениеДобавлено: Чт июл 19, 2018 7:55 pm 
Не в сети

Зарегистрирован: Пт дек 08, 2017 11:51 am
Сообщения: 18
Откуда: Санкт-Петербург
Методы, объявленные в блоке inclass, являются статическими, а статические методы ничего не знают об объектах.


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: Объект из которого был вызван inclass-метод
СообщениеДобавлено: Пт июл 20, 2018 12:30 pm 
Не в сети

Зарегистрирован: Пт июн 29, 2012 12:18 am
Сообщения: 436
Откуда: Москва
dmvw34 писал(а):
Методы, объявленные в блоке inclass, являются статическими, а статические методы ничего не знают об объектах.

Разумеется, но речь то не об этом...

_________________
ТБ.Бюджет


Вернуться к началу
 Профиль Отправить личное сообщение Отправить email  
 
 Заголовок сообщения: Re: Объект из которого был вызван inclass-метод
СообщениеДобавлено: Пт июл 20, 2018 12:50 pm 
Не в сети

Зарегистрирован: Сб май 14, 2005 5:12 pm
Сообщения: 1678
Теоретически, можно сделать программный интерфейс типа:

Код:
Callstack :ListOf<StackFrame>

class StackFrame:
  Method :MethodInfo
  Args :ListOf<Variable>
  LocalVars :ListOf<Variable>

class Variable
  Name :String;
  Value :Variant;


Тогда можно переписать отладчик на прикладном уровне :)


Вернуться к началу
 Профиль Отправить личное сообщение  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB