Как запустить в потоке процедуру с параметрами? - PascalABC.NET
Формулировка задачи:
В ветке по C# нашел подобный вопрос и решение, но повторить удалось не до конца. По найденному решению я написал следующее:
Вроде это даже работает, но проблема заключается в том, как обращаться к объекту, переданному в процедуру test.
Например, есть у меня объект
Я запускаю процедуру test в потоке и передаю в поток параметр circle. Если в теле процедуры присутствует что-то на подобие этого:
Компилятор пишет, что radius не объявлен в object.
Как с этим бороться?
Понимаю, вопрос скорее даже не про запуск процедуры в потоке, а про взаимодействие с объектами, но я не придумал как сформулировать его конкретно по теме.
P.s. оберег от кидания тапками: да, у меня нет базовых знаний по объектам, но я пока и не пытался это осваивать. В качестве школьного проекта решил написать игру и вот.. пытаюсь разобраться по ходу.
Решение задачи: «Как запустить в потоке процедуру с параметрами?»
textual
Листинг программы
procedure test(param: object); begin (param as CircleABC).Radius := 50; end;
Объяснение кода листинга программы
- Объявлена процедура с именем
testи одним параметром типаobjectс именемparam. - Внутри процедуры происходит приведение типа параметра
paramк типуCircleABCс помощью оператораas. - Полученному объекту типа
CircleABCприсваивается значение свойстваRadiusравное 50. - Значение свойства
Radiusобъекта типаCircleABCне изменяется, так как присваивание происходит только в пределах процедурыtest. - В результате выполнения процедуры
testзначение свойстваRadiusобъекта типаCircleABCне изменится.