![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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;