Главная страница
    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-3156
АлеКо
2003-05-15 03:53
2003.06.02
InstallShield


14-3109
Style
2003-05-14 11:34
2003.06.02
Delphi Challenge - Народ добавил раздел конкурсы и раздел ссылки


3-2752
АТ
2003-05-07 04:38
2003.06.02
Помогите подключиться к Exel через ADO


4-3207
Stexen
2003-04-02 18:25
2003.06.02
Запуск exe-файла.


1-2977
Mihan
2003-05-15 12:53
2003.06.02
Алгоритм умножения в столбик





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