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

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

TclientSocket [D5, WinXP]


ingine ©   (2004-12-28 20:58:00) 

Вопрос конечно глупый, но как заставить работать TClientSOcket в консольном приложении(где нет циклов обработки виндовых сообщений)?


Digitman   (2004-12-30 08:20:00) [1]


> ingine   (29.12.04 18:17) [7]
> Дак все таки как


var
 Msg: TMsg;
..
while GetMessage(Msg, 0, 0, 0) do
 DispatchMessage(Msg);

цикл этот должен работать в том трэде, который создал объект TClientSocket

но следует учесть, что в случае конс.приложения реализация этого цикла в осн.трэде не позволит осуществлять пользовательский клавиатурный ввод "традиционным" способом. т.е. с пом. ReadLn(), ибо ReadLn() - блокирующая ф-ция


TButton   (2004-12-29 21:52:00) [2]


> организовать сраныйпо "сложности" цикл

*confused* ???


VMcL   (2004-12-29 18:58:00) [3]

>> ingine  (29.12.04 18:17) [7]

Именно так, как написано. Разве что, можно использовать PeekMessage вместо GetMessage.


ingine   (2004-12-29 18:17:00) [4]

Дак все таки как
> организовать сраный по "сложности" цикл
> while GetMessage do Dispatchmessage ?!


Digitman   (2004-12-29 12:39:00) [5]


> Seeker ©   (29.12.04 12:08) [5]


> А ты пытался засунуть TClientSOcket в поток?


"засунуть" я не пытался, стиль "засовывания", увы, не мой


> Он сразу переходит в блокирующий режим


чушь ты несешь несусветную.
с какого перепугу компонент изменит режим, определяемый св-вом  ClientType, если ты сам ЯВНО его не изменишь ?


> отсюда прощай события


опять же - чушь.
до тех пор, пока ClientNype = ctNonBlocking, ничто и никуда не "пропадет".
головой просто думать надо, а не причинным местом.


> Нужно организовывать все самому


и это так сложно ?
организовать сраный по "сложности" цикл
while GetMessage do Dispatchmessage ?!


Seeker   (2004-12-29 12:08:00) [6]


> а TClientSOcket, надо понимать, "работает ненормально" ?
> Так что ли ?)



> Digitman ©

А ты пытался засунуть TClientSOcket в поток?
Он сразу переходит в блокирующий режим, а отсюда прощай события.
Нужно организовывать все самому.
WSocket в этом плане работает нормально,все события на месте.


Digitman   (2004-12-29 11:15:00) [7]


> Seeker ©   (29.12.04 09:32) [3]


> там все работает нормально


а TClientSOcket, надо понимать, "работает ненормально" ? Так что ли ?)


Seeker   (2004-12-29 09:32:00) [8]

Есть еще WSocket( эт чтоб заменить TClientSOcket) там все работает нормально.


Digitman   (2004-12-29 08:13:00) [9]


> ingine   (28.12.04 20:58)  
> Вопрос конечно глупый


с тем же успехом можно было спросить, как, мол, заставить работать другой компонент, явно или неявно использующий механизм оконных нотификаций .. TClientSocket в режиме NonBlocking в этом смысле - не исключение, он так же использует этот механизм, а значит цикл ожидания/выборки/диспетчеризации вин-сообщений в том или ином виде тобой должен быть организован


VMcL   (2004-12-28 23:35:00) [10]

>> ingine  (28.12.04 20:58)

Видимо, нужно сделать цикл выборки сообщений или использовать блокирующий режим.

P.S. Зачем нужно именно консольное приложение? Возможно, подойдет GUI'шное, но без использования VCL?


Наверх

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