Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

совсем немного вроде осталось, и - на тебе... [D6, WinXP]


Граф ©   (2002-10-21 22:15:00) 

Thread поместил в отдельном юните (исключительно для наглядности и красоты), но теперь в процедуре вызываемой методом Synchronize отказвыается понимать переменную MainForm, оставшуюся, понятно в другом юните. Если поставить ссылку на юнит с MainForm в uses юнита-потока, то возникает циклическая ссылка (юнит с MainForm ссылается на юнит-поток и правильно делает :) ).
Можно создать еще один юнит, конечно, но это как-то не очень красиво.
По идее задача банальная, должно быть, соответственно, банальное решение. Но его пока нет :).


Smithson   (2002-10-22 09:38:00) [1]

Иметь перекрестные ссылки ЕСТЬ хорошо, поскольку перекрестными и ссылками они выглядядт только на уровне языка, а после трудов компилятора будет просто общая область видимости (односторонняя).


VaS   (2002-10-22 09:11:00) [2]

Иметь перекрестные ссылки не есть хорошо. Лучше в модуле с нитью сделать глобальную переменную - указатель на метод (...of object) без параметров, а в модуле с формой в initialization присваивать ей метод формы.


Граф   (2002-10-21 22:33:00) [3]

вопрос снимется, все работает, позор на мою седую бороду


TTCustomDelphiMaster   (2002-10-21 22:27:00) [4]

Добавляйте uses в implementation

implementation
uses unit1{MainForm};


Граф   (2002-10-21 22:20:00) [5]

Да, вот что еще интересно.
Юнит-поток я создавал через New->Thread Object В созданном юните была такая запись
{ Important: Methods and properties of objects in VCL or CLX can only be used
in a method called using Synchronize, for example,

Synchronize(UpdateCaption);

and UpdateCaption could look like,

procedure CopyFile.UpdateCaption;
begin
Form1.Caption := "Updated in a thread";
end; }

То есть, вроде так и должно работать, но у меня вот не хочет. Конечно это я где-то набардачил, но вот где?


Наверх

Титульная страница Поиск, карта сайта Написать письмо