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

Вниз

RAS.ConnectionStatus   Найти похожие ветки 

 
yegor   (2004-07-18 13:21) [0]

Есть ли уже что-нибудь готовое для перевода статуса соединения в осмысленную строку? Что-нибудь наподобие RasGetErrorString. Порылся по MSDN-у и гуглу - пока не нашёл.


 
Ihor Osov'yak ©   (2004-07-18 14:52) [1]

хм. RAS.ConnectionStatus - это откуда, из каких парафий?

Ps. Если имелось ввиду структура RASCONNSTATUS, декларированная в Ras.h,
то такм всего два энумератора, имеющих по два значения, и два массива символов, говорящих об имени девайса и его типе.. Символы и так осмисленные, а для енумератов - case рулит. Или if. Учитывая всего три возможных состояния (подключено, отключено, или ошибка при получении инфо, тем более, что ошибок может быть всего две)


var
 status:RASCONNSTATUS;
 readMe: string;
...
readMe := "что-то не то.. ";
case  status.dwError of
  0: case status.RASCONNSTATE of
       RASCS_Connected: readMe := "соединились";
       RASCS_Disconnected: readMe := "увы, лето прошло-пролетело и осень настала..";    
     end;
  ERROR_NOT_ENOUGH_MEMORY: readMe := " что-то с памятью моею сталось..";
  ERROR_INVALID_HANDLE:  readMe := "Вы, это, не надо... всякую дребедень сунуть..  ";
end;

   


 
yegor   (2004-07-18 15:19) [2]

>имеющих по два значения
С dwError проблем нет. Есть RasGetErrorString. А вот со статусом есть. Там ещё куча промежуточных значений типа
 RASCS_OpenPort          = 0;
 RASCS_PortOpened        = 1;
 RASCS_ConnectDevice     = 2;
 RASCS_DeviceConnected   = 3;
 RASCS_AllDevicesConnected = 4;
 RASCS_Authenticate      = 5;
 RASCS_AuthNotify        = 6;
и т. д.
Мне не сложно написать вывод имени константы или даже самому нарисовать описания. Хочется чего-нибудь уже готового, стандартного. :-)


 
yegor   (2004-07-18 15:23) [3]

PS. Кстати dwError - не совсем то, что Вы пишете. Это не то же, что результат вызова WinAPI функции, а например, может быть сообщением о ненайденном устройстве или о провале авторизации, ещё там что...


 
Ihor Osov'yak ©   (2004-07-18 15:52) [4]

блин, так нужно же конкретно говорить, в каком контексте RASCONNSTATUS рассматривается.
Я привел пример в контексте RasGetConnectionStatus. если вам нужно в контексте callback-ов для ассинхроного RasDial - то так и нужно говорить. А есть еще и другие контексты. Там статусов допустимых немгого больше. Но тоже энумераторы.
Стандартного средства получения строки, кажется, нет.

В мсдн есть подробное описание энумераторвр, можно кейсы рисовать..

Несколько лет мне встречалось что-то подобное на нижеследующее (ссылку на оригинал не имею, c первого взгляда очень похоже на правду):

function GetRasCSString(State: integer): String;
var
S:string;
begin
   S:="";
   case State of
     RASCS_OpenPort:
       S:="Открытие порта";
     RASCS_PortOpened:
       S:="Порт открыт";
     RASCS_ConnectDevice:
       S:="Дозвон по текущему номеру";
     RASCS_DeviceConnected:
       S:="Устройство соединилось";
     RASCS_AllDevicesConnected:
       S:="Все устройства соединились";
     RASCS_Authenticate:
       S:="Начало опознания";
     RASCS_AuthNotify:
       S:="Установление подлинности";
     RASCS_AuthRetry:
       S:="Повторение установления подлинности";
     RASCS_AuthCallback:
       S:="Повторный вызов установления подлинности";
     RASCS_AuthChangePassword:
       S:="Изменение пароля установления подлинности";
     RASCS_AuthProject:
       S:="Проект установления подлинности";
     RASCS_AuthLinkSpeed:
       S:="Быстродействие связи установление подлинности";
     RASCS_AuthAck:
       S:="Подтвеждение установления подлинности";
     RASCS_ReAuthenticate:
       S:="Повторное опознание и установление подлинности";
     RASCS_Authenticated:
       S:="Опознанный пароль";
     RASCS_PrepareForCallback:
       S:="Подготовка к повторному вызову";
     RASCS_WaitForModemReset:
       S:="Ожидание сброса модема";
     RASCS_WaitForCallback:
       S:="Ожидание повторного вызова";
     RASCS_Projected:
       S:="Запроектированный";
     RASCS_StartAuthentication:
       S:="Начало установления подлинности";
     RASCS_CallbackComplete:
       S:=" Полный повторный вызов";
     RASCS_LogonNetwork:
       S:="Регистрация в сети";

     RASCS_Interactive:
       S:="Интерактивный";
     RASCS_RetryAuthentication:
       S:="Повтор установления подлинности";
     RASCS_CallbackSetByCaller:
       S:="Повторный вызов, установленный к вызывающему оператору";
     RASCS_PasswordExpired:
       S:="Пароль истек";

     RASCS_Connected:
       S:="Соединение";
     RASCS_Disconnected:
       S:="Разъединение";
   end;
   Result:=S;
end;


 
yegor   (2004-07-18 16:54) [5]

Ладно, спасибо за русские описания сообщений. Думаю, тема закрыта. :-)
P.S. Advanced Dialer выводит в своей консольке сообщения о статусе на английском, значит, сам придумывает. :-)


 
Ihor Osov'yak ©   (2004-07-18 17:39) [6]

> Advanced Dialer выводит в своей консольке сообщения о статусе на английском, значит, сам придумывает.

Может и так. А может и нет.  Проанализируйте, что он там импортирует, в частности из rasapi32.dll, может что интересное и обнаружите. Если  обнаружите - сюда сообщите. Также можете сделать поиск соотв. строк в бинарике Advanced Dialer, если они там будут присутствовать - тогда и импорта анализировать не нужно.



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

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

Наверх




Память: 0.49 MB
Время: 0.036 c
1-1092417058
Gnec
2004-08-13 21:10
2004.08.29
Как сделать перескок к нужному итему?


14-1092062993
default
2004-08-09 18:49
2004.08.29
"Магия" девятки


1-1092196174
maxkat
2004-08-11 07:49
2004.08.29
глобальные переменные!


14-1092191995
guest
2004-08-11 06:39
2004.08.29
Скажите мне как полиглот полиглоту


4-1089966976
IllusoryOrion
2004-07-16 12:36
2004.08.29
Опять Shell