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

Вниз

Дозвон по модему   Найти похожие ветки 

 
alexnmsk   (2008-04-26 01:37) [0]

Здравствуйте. Нужно сделать дозвон по модему (запустить функцию, которая установит соединение и по окончании вернет значение boolean). Во время установления соединения, отображать изменение состояния и позволить пользователю прервать его нажатием кнопочки. Использую ф-цию
RasDial(Nil, Nil, DialParams, 0, @RasCallback, hRAS) где RasCallBack - процедура, позволяющая отобразить состояние.
procedure RasCallback(msg: Integer; state: TRasConnState;
 error: Integer); stdcall;
Begin
 ConState:= State; //глобальная переменная
 ...
End;
При таком вызове RasDial возвращает значение немедленно и затем вызывает RasCallBack при изменении состояния. Теперь проблема: как сделать правильное ожидание окончания установления соединения после вызова RasDial?

while (ConState<>RASCS_Connected) and (ConState<>RASCS_Disconnected) do Application.ProcessMessages;

Это работает, но грузит систему. Можно как нибудь по другому? Через TEvent что ли?


 
tesseract ©   (2008-04-26 13:10) [1]


> Это работает, но грузит систему. Можно как нибудь по другому?
>  Через TEvent что ли?


Зачем ? CallBack должен возвращаться только когда у тебя состояние поменялось.


> while (ConState<>RASCS_Connected) and (ConState<>RASCS_Disconnected)
> do Application.ProcessMessages;


Конечно загрузит. Ты это что в CallBack Проверяешь ?  Жди пока тебе не вернёться информация о том что соединение установлено. Асинхронные функции- для начинающего не совсем понятны, но потом понравяться и полюбишь :-)


 
alexnmsk   (2008-04-26 17:19) [2]

Спасибо, что откликнулись.

> Конечно загрузит. Ты это что в CallBack Проверяешь ?  


Нет, это это я проверяю после вызова RasDial.
Мне нужна комбинация синхронной и асинхронной функции, т.е. вернуть значение нужно по окончании работы, но при этом отслеживать изменение состояния и иметь возможность прервать. С отслеживанием проблем нет, а вот как сделать функцию, которая завершится при установлении соединения? Делать бесконечный цикл проверки состояния не хотелось бы.


 
tesseract ©   (2008-04-30 13:20) [3]


> а вот как сделать функцию, которая завершится при установлении
> соединения?


Так состояние соединения,  тебе на даст ответ ?



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

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

Наверх




Память: 0.47 MB
Время: 0.008 c
15-1236671607
Andreyar
2009-03-10 10:53
2009.05.10
Есть работа по Delphi. Кто возьмется


2-1238240264
Showmessage
2009-03-28 14:37
2009.05.10
Использование БД


3-1220598203
cstor
2008-09-05 11:03
2009.05.10
Как записать текст, в текстовое поле таблицы Paradox 7


6-1202988792
РВА
2008-02-14 14:33
2009.05.10
Сеть по електропроводке


15-1236680885
начинающий
2009-03-10 13:28
2009.05.10
Сервак пищит, хотя и грузиться