![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
кривокодер ;)
Форумчанин
Регистрация: 20.06.2008
Сообщений: 707
|
![]()
Здравствуйте, уважаемые!
Столкнулся с проблемой, хотелось бы послушать ваши советы... Программа создает при необходимости новый поток. Поток создает компонент. Как можно передать данные этому компоненту? Потоку назначил проперти Tag, пот создании компонента значение этого проперти назначается одноименному проперти компонента... Конкретный пример: Пишу тунеллер. На форме имеется TServerSocket, который принимает входящие подключения (от браузера к примеру). По теории нужно создать TClientSocket на внешний прокси и передать ему данные, которые получил сервер. При установлении коннекта сервером - создаю новый поток, ему передаю значение SocketHandle (просто в качестве идентификатора Tag для клиента), новый поток стартует и создает клиент, клиент коннектится. Как можно найти указатель на этот клиент? Как правильнее передать ему пакет данных? Заранее благодарен! ПыСы: в ветку "Работа с сетью" пожалуйста не перекидывайте, проблема не с сетями, а с поиском указателя на компонент.
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид} |
![]() |
![]() |
![]() |
#2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Ну опиши свойство public, переменную, в которую создаешь экземпляр класса (компонент свой) тогда и обращайся к нему как к свойству потока.
I'm learning to live...
|
![]() |
![]() |
![]() |
#3 |
кривокодер ;)
Форумчанин
Регистрация: 20.06.2008
Сообщений: 707
|
![]()
Проблема в другом... потоков будет довольно много, 10-20, в зависимости от активности браузера... проблемы у меня вызвало какраз нахождение нужного потока. КлиентСокет у меня итак в публике, а ещё есть проперти потока Tag, которое тоже в публике. Как правильно найти нужный поток (с указаным тэгом) ?
И ещё обращаться придется во время исполнения потока... передавать данные то надо незамедлительно, иначе лаги будут...
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид} |
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 28.07.2009
Сообщений: 1,510
|
![]()
Все потоки забиваются в массив.
Или сделать событие потоку, в котором он будет передавать Sender: TObject |
![]() |
![]() |
![]() |
#5 |
кривокодер ;)
Форумчанин
Регистрация: 20.06.2008
Сообщений: 707
|
![]()
пример можно?
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид} |
![]() |
![]() |
![]() |
#6 |
Участник клуба
Регистрация: 28.07.2009
Сообщений: 1,510
|
![]() Код:
|
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
1)внутрь Tag можно передать указатель на обьект(на всякий говорю что просто переменную любого класса) с приведением типов.
2)можно описать поток, и задать ему нужные св-ва(поля класса), так и конструкторы и прочее. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Windows 7 какая из них? | melomandk | Windows | 1 | 26.04.2010 08:13 |
Переписать в файл Т2 все компоненты файла Т1 с заменой в них символа «0» на символ "1" | АполинАрия | Помощь студентам | 2 | 31.05.2009 23:45 |
Сделаем из них чебурашек! | alexinspir | Свободное общение | 2 | 01.01.2009 11:30 |
Циклы и выход из них. | alikk | Общие вопросы Delphi | 23 | 13.04.2008 08:44 |