Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.06.02;
Скачать: [xml.tar.bz2];

Вниз

Повторный вызов RASDial   Найти похожие ветки 

 
Jel   (2003-04-02 12:28) [0]

Есть код


procedure RasDialCallBack(MSG: integer; State: TRasConnState; Error: Integer); stdcall;
var s : string;
begin
s := DateTimeToStr(Now);
Form1.Dial_Done := (State >= RASCS_DONE) or (Error <> 0);
If Error <> 0 then s := format("%s, код ошибки %d",[Form1.GetStateText(State), Error])
Else s := Form1.GetStateText(State);
Form1.LogString(s);
end;

function TForm1.Connect(EntryName, User, Password: string) : integer;
var RDP : TRasDialParams;
HRC : THRasConn;
RCS : TRasConnStatus;
begin
Logstring("Установка соединения "+EntryName);
ZeroMemory(@RDP, SizeOf(RDP));
RDP.dwSize := SizeOf(RDP);
Move(EntryName[1], RDP.szEntryName, Length(EntryName));
Move(User[1], RDP.szUserName, Length(User));
Move(Password[1], RDP.szPassword, Length(Password));
HRC := 0;
Dial_Done := false;
RasDial(nil, nil, RDP, 0, @RasDialCallBack, HRC);
repeat Application.ProcessMessages until Dial_Done or Application.Terminated;
ZeroMemory(@RCS, SizeOf(RCS));
RCS.dwSize := SizeOf(RCS);
RasGetConnectStatus(HRC, RCS);
if RCS.rasconnstate = RASCS_CONNECTED then Result := HRC
else begin
RasHangUp(HRC);
Result := 0;
end;
end;


Работает на "Ура" но только один раз :(
При повторном вызове, например после ошибки соединения отвисает на repeat until...
CallBack функция НЕ вызывается, Dial_Done всегда false и так до Application.Terminate.

В чем проблема? Почему не вызывается RasDialCallBack и как это можно победить?


 
Jel   (2003-04-02 15:31) [1]

Отвечу сам себе - вдруг кому сгодится ,)

После RasHangUp(HRC) надо дописать

repeat
Application.ProcessMessages;
Until RasGetConnectStatus(HRC, RCS) = ERROR_INVALID_HANDLE;

Иначе при повторном вызове RasDial будут проблемки из-за того, что RasHangUp завершается не дожидаясь, пока соединение будет закрыто и все связанные с ним ресурсы освободятся.



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

Форум: "Система";
Текущий архив: 2003.06.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.44 MB
Время: 0.007 c
14-3172
Soft
2003-05-15 12:35
2003.06.02
Microsoft и Linux


14-3077
IronHawk
2003-05-12 11:55
2003.06.02
Пятая Киевская Встреча Мастаков в Реале - СОСТОЯЛАСЬ!!!


1-2924
_Narayan_
2003-05-17 22:25
2003.06.02
DLL


3-2812
DBDev
2003-05-15 11:44
2003.06.02
как корректно записать объект OLE в поле БД?


14-3105
Дмитрий К.К.
2003-05-14 05:18
2003.06.02
Именинники 14 мая





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский