Главная страница
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.06 c
1-1108570275
GanibalLector
2005-02-16 19:11
2005.03.06
"ХР-манифест"


1-1108744682
TTR
2005-02-18 19:38
2005.03.06
Для чего нужно закрывать хэндл процесса в функции CreateProcess ?


4-1106295756
Stanislav
2005-01-21 11:22
2005.03.06
Ответ на сообщение


1-1108726525
redlord
2005-02-18 14:35
2005.03.06
treeview + объект


3-1107868627
Ч_А_Й_Н_И_К
2005-02-08 16:17
2005.03.06
Получение имени сервера как параметр