RasDial - 连接到VPN服务器

时间:2014-07-01 00:48:32

标签: delphi delphi-xe2 delphi-7 delphi-xe delphi-xe6

我尝试连接到VPN服务器,但没有成功,我创建了一个名称为" VPN"的连接。

var
 p : TRasDialParamsA;
 R : LongInt;
 hRAS : THRasConn;
begin
 FillChar(p, SizeOf(TRasDialParams), 0);
 p.dwSize := sizeof(TRasDialParams);
 p.szEntryName := 'VPN';
 R := RasDial(nil, 'VPN', p, 0, nil, hRas);
 MessageBoxA(0, pAnsichar(inttostr(r)), 'err!', $40);
end;

错误代码出现#6(#606 http://support.microsoft.com/kb/163111"端口未连接。")

我该怎么办?

日Thnx。

1 个答案:

答案 0 :(得分:1)

在Delphi 2009及更高版本中,RasDial()映射到RawDialW(),其中TRasDialParamsW为输入。但是您要将p声明为TRasDialParamsA,因此您将Ansi数据传递给期望Unicode数据的RasDialW()

在所有Delphi版本中删除A并让TRasDialParams映射到正确的类型(在调用SizeOf()时,您已经依赖于该行为)。

同样,您还需要修复MessageBox()来电。它在Delphi 2009 +中同样被打破。

试试这个:

var
  p : TRasDialParams;
  R : LongInt;
  hRAS : THRasConn;
begin
 ZeroMemory(@p, SizeOf(p));
 p.dwSize := SizeOf(p);
 p.szEntryName := 'VPN';
 R := RasDial(nil, 'VPN', p, 0, nil, hRas);
 MessageBox(0, PChar(IntToStr(r)), 'err!', MB_OK or MB_ICONINFORMATION);
end;