Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

RAS.ConnectionStatus [D5, Win2k]


yegor ©   (2004-07-18 13:21:00) 

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


Ihor Osov'yak   (2004-07-18 17:39:00) [1]

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

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


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

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


Ihor Osov'yak   (2004-07-18 15:52:00) [3]

блин, так нужно же конкретно говорить, в каком контексте 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 15:23:00) [4]

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


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

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


Ihor Osov'yak   (2004-07-18 14:52:00) [6]

хм. 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;

   


Наверх

Титульная страница Поиск, карта сайта Написать письмо