Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.02.2019, 13:34   #1
PaHaNjkee
Delphi 10 Seattle
Пользователь
 
Аватар для PaHaNjkee
 
Регистрация: 01.11.2010
Сообщений: 90
По умолчанию Правильное расположение классов

Привет, друзья. Возникла такая проблема, что есть несколько классов. Один запускает другой и передаёт в параметрах себя. Соответственно второй исполняется и меняет значение в первом. Всё логично, но из-за расположения в коде, один не видит другого и ругается "Undeclared identifier". Какое может быть решение данной проблемы?
Код:
TTask = class
  private
    .......
    fMainThread: TTasksThread; // тут ошибка. класс расположен выше класса потока
    .......
  end;
Класс задания. Запускает поток на исполнение

Код:
TTasksThread = class(TThread)
  private
    .......
    fTask: TTask;
    .......
  protected
    procedure Execute; override;
  public
    constructor Create(aList: TAccountsList; aUsingProxys: Boolean; aTask: TTask);
  // При создании потока передается параметр в виде указателя на задание, чтобы в дальнейшем менять в нём параметры
   .......
  end;
Каков выход из данной ситуации?
PaHaNjkee вне форума Ответить с цитированием
Старый 16.02.2019, 14:06   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

http://docwiki.embarcadero.com/RADSt...bjects_(Delphi)
Forward Declarations and Mutually Dependent Classes
p51x вне форума Ответить с цитированием
Старый 16.02.2019, 14:11   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от PaHaNjkee Посмотреть сообщение
Каков выход из данной ситуации?
https://stackoverflow.com/questions/...asses/13005810

Код:
type

TTasksThread = class; (* forward declaration *)
 
TTask = class
  private
    .......
    fMainThread: TTasksThread; // тут ошибка. класс расположен выше класса потока
    .......
  end;

TTasksThread = class(TThread)
  private
    .......
    fTask: TTask;
    .......
  protected
    procedure Execute; override;
  public
    constructor Create(aList: TAccountsList; aUsingProxys: Boolean; aTask: TTask);
  // При создании потока передается параметр в виде указателя на задание, чтобы в дальнейшем менять в нём параметры
   .......
  end;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Правильное расположение объектов в Unity3D guno77 Gamedev - cоздание игр: Unity, OpenGL, DirectX 1 07.01.2018 16:41
C# - Создать иерархию классов Выпускник вуза, Бакалавр, Магистр, Инженер. Класс Выпускник вуза должен содержать атрибуты и методы, общие для производных классов Wexley Помощь студентам 0 07.12.2016 12:06
[C#] Сериализация списка классов (нескольких классов) vermond Помощь студентам 3 06.06.2015 23:10
Правильное управление jetei Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 01.02.2012 19:32
Создание классов и использование объектов классов при написании программ в среде C++. Frozen inside Помощь студентам 0 16.04.2009 23:18