Как запустить в потоке процедуру с параметрами? - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

В ветке по C# нашел подобный вопрос и решение, но повторить удалось не до конца. По найденному решению я написал следующее:
Листинг программы
  1. uses
  2. system.threading;
  3. procedure test(param: object);
  4. begin
  5. end;
  6. begin
  7. var t := new Thread(test);
  8. t.start({параметры});
  9. end.
Вроде это даже работает, но проблема заключается в том, как обращаться к объекту, переданному в процедуру test. Например, есть у меня объект
Листинг программы
  1. circle := new CircleABC(0, 0, 50, clBlack);
Я запускаю процедуру test в потоке и передаю в поток параметр circle. Если в теле процедуры присутствует что-то на подобие этого:
Листинг программы
  1. param.radius := 50;
Компилятор пишет, что radius не объявлен в object. Как с этим бороться? Понимаю, вопрос скорее даже не про запуск процедуры в потоке, а про взаимодействие с объектами, но я не придумал как сформулировать его конкретно по теме. P.s. оберег от кидания тапками: да, у меня нет базовых знаний по объектам, но я пока и не пытался это осваивать. В качестве школьного проекта решил написать игру и вот.. пытаюсь разобраться по ходу.

Решение задачи: «Как запустить в потоке процедуру с параметрами?»

textual
Листинг программы
  1. procedure test(param: object);
  2. begin
  3.   (param as CircleABC).Radius := 50;
  4. end;

Объяснение кода листинга программы

  1. Объявлена процедура с именем test и одним параметром типа object с именем param.
  2. Внутри процедуры происходит приведение типа параметра param к типу CircleABC с помощью оператора as.
  3. Полученному объекту типа CircleABC присваивается значение свойства Radius равное 50.
  4. Значение свойства Radius объекта типа CircleABC не изменяется, так как присваивание происходит только в пределах процедуры test.
  5. В результате выполнения процедуры test значение свойства Radius объекта типа CircleABC не изменится.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.889 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы