Главная страница
    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.011 c
1-2959
Nesterovsky
2003-05-18 11:21
2003.06.02
Как в TListView отображать записи разным шрифтом


14-3061
NewN
2003-05-16 09:30
2003.06.02
Калькулятор за 30 строчек.


9-2732
Namo
2002-12-20 20:42
2003.06.02
Либо я совсем идиот...


3-2828
Viktor
2003-05-15 16:12
2003.06.02
Повторно не выполняется запрос


3-2791
Vick
2003-05-14 15:10
2003.06.02
Проблема экспортирования DBGridEh в Excel





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский