Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.06;
Скачать: CL | DM;

Вниз

TclientSocket   Найти похожие ветки 

 
ingine   (2004-12-28 20:58) [0]

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


 
VMcL ©   (2004-12-28 23:35) [1]

>>ingine  (28.12.04 20:58)

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

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


 
Digitman ©   (2004-12-29 08:13) [2]


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


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


 
Seeker ©   (2004-12-29 09:32) [3]

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


 
Digitman ©   (2004-12-29 11:15) [4]


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


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


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


 
Seeker ©   (2004-12-29 12:08) [5]


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



> Digitman ©

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


 
Digitman ©   (2004-12-29 12:39) [6]


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


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


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


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


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


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


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


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


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


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

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


 
VMcL ©   (2004-12-29 18:58) [8]

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

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


 
TButton ©   (2004-12-29 21:52) [9]


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

*confused* ???


 
Digitman ©   (2004-12-30 08:20) [10]


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


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

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

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



Страницы: 1 вся ветка

Текущий архив: 2005.03.06;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.041 c
1-1109016306
Wonderer
2005-02-21 23:05
2005.03.06
Товарищ Панов! Это что, не тема сообщения?


14-1108390297
III
2005-02-14 17:11
2005.03.06
Работа PHP


1-1108672612
Yegorchic
2005-02-17 23:36
2005.03.06
Что такое с ReadLn?


14-1108231106
hamster
2005-02-12 20:58
2005.03.06
Kaspersky


1-1108629629
Laymer
2005-02-17 11:40
2005.03.06
TWebBrowser