我尝试连接到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。
答案 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;