![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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?