unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;const
RAS_MaxDeviceType = 16;//设备类型名称长度
RAS_MaxEntryName = 256;//连接名称最大长度
RAS_MaxDeviceName = 128;//设备名称最大长度
RAS_MaxIpAddress = 15;//IP地址的最大长度
RASP_PppIp = $8021;//拨号连接的协议类型,该数值表示PPP连接type
HRASCONN = DWORD;//拨号连接句柄的类型
RASCONN = record//活动的拨号连接的句柄和设置信息
dwSize : DWORD;//该结构所占内存的大小(Bytes),
// 一般设置为SizeOf(RASCONN)
    hrasconn : HRASCONN;//活动连接的句柄
szEntryName : array[0..RAS_MaxEntryName] of char;
 //活动连接的名称
szDeviceType : array[0..RAS_MaxDeviceType] of char;
//活动连接的所用的设备类型
szDeviceName : array[0..RAS_MaxDeviceName] of char;
//活动连接的所用的设备名称
end;
TRASPPPIP = record//活动的拨号连接的动态IP地址信息
dwSize : DWORD;//该结构所占内存的大小(Bytes),
//一般设置为SizeOf(TRASPPPIP)
    dwError : DWORD;//错误类型标识符
szIpAddress : array[ 0..RAS_MaxIpAddress ] of char;
//活动的拨号连接的IP地址
end;  type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
function RasEnumConnections( var lprasconn : RASCONN ;var lpcb: DWORD;var lpcConnections : DWORD) : DWORD; stdcall;
function RasEnumConnections:external'Rasapi32.dll';function RasGetProjectionInfo(hrasconn : HRasConn;rasprojection : DWORD;var  lpprojection : TRASPPPIP;var  lpcb : DWord) : DWORD;stdcall;
function RasGetProjectionInfo:external'Rasapi32.dll' ;    procedure Button1Click(Sender: TObject);  private
{ Private declarations }
 public
    { Public declarations }
   end;var
  Form1: TForm1;
implementation{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);const
     MaxConnections = 10;//假设最多有10个活动的拨号连接
var   connections : array[0..MaxConnections-1] of RASCONN;
   //拨号连接数组
   longSize : dword;
   intAvailabelConnections : dword;
   //活动的拨号连接的实际数目
   intIndex : integer;
   strTemp : string;
   dwResult : DWORD;
   dwSize         : DWORD;
   RASpppIP     : TRASPPPIP;
//活动的拨号连接的动态IP地址信息
begin
  //libhandle:= LoadLibrary(';
    connections[ 0 ].dwSize := sizeof(RASCONN);
     longSize := MaxConnections * connections[ 0 ].dwSize;
//接收活动连接的缓冲区大小
     intAvailabelConnections := 0;
     //获取所有活动的拨号连接的信息(连接句柄和设置信息)
     dwResult:= RasEnumConnections( connections[0],longSize,intAvailabelConnections );
     if 0 <> dwResult then
        memo1.lines.add( '错误:' + inttostr( dwResult ) )
     else
         begin
              memo1.lines.add( '现有的活动连接有' +
 IntToStr( intAvailabelConnections ) + '个');
//显示所有活动的拨号连接的信息(设置信息和动态IP地址)
        for intIndex := 0 to intAvailabelConnections - 1 do
                     begin
//显示一个活动的拨号连接的设置信息
                          strTemp := '连接名称:'
 + StrPAS( connections[ intIndex ].szEntryName )
                                   + ',设备类型:'
 + StrPAS( connections[ intIndex ].szDeviceType )
                                   + ',设备名称:'
 + StrPAS( connections[ intIndex ].szDeviceName );
                          memo1.lines.add( strTemp );
 //显示一个活动的拨号连接的动态IP地址
                          dwSize := SizeOf(RASpppIP);
                          RASpppIP.dwSize := dwSize;
                          dwResult := RASGetProjectionInfo( connections[ intIndex ].hRasConn,RASP_PppIp,RasPPPIP,dwSize);//获取动态IP地址
                          if  0 <> dwResult then
                              memo1.lines.add('错误:' + inttostr( dwResult ))
                          else
                              memo1.lines.add('动态地址:' + StrPas(RASpppIP.szIPAddress));
                     end;
         end;
end;end.

解决方案 »

  1.   

    function RasEnumConnections:external'Rasapi32.dll';//前面没有参数、类型后面没有函数名。应当放到实现中去。看看下面的是不是您的意思。(只调试了一下,没看内容理解错了莫怪)。
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;const
    RAS_MaxDeviceType = 16;//&Eacute;è±&cedil;&Agrave;à&ETH;&Iacute;&Atilde;&ucirc;&sup3;&AElig;&sup3;¤&para;&Egrave;
    RAS_MaxEntryName = 256;//&Aacute;&not;&frac12;&Oacute;&Atilde;&ucirc;&sup3;&AElig;×&icirc;&acute;ó&sup3;¤&para;&Egrave;
    RAS_MaxDeviceName = 128;//&Eacute;è±&cedil;&Atilde;&ucirc;&sup3;&AElig;×&icirc;&acute;ó&sup3;¤&para;&Egrave;
    RAS_MaxIpAddress = 15;//IP&micro;&Oslash;&Ouml;·&micro;&Auml;×&icirc;&acute;ó&sup3;¤&para;&Egrave;
    RASP_PppIp = $8021;//&sup2;&brvbar;&ordm;&Aring;&Aacute;&not;&frac12;&Oacute;&micro;&Auml;&ETH;&shy;&Ograve;é&Agrave;à&ETH;&Iacute;&pound;&not;&cedil;&Atilde;&Ecirc;&yacute;&Ouml;&micro;±í&Ecirc;&frac34;PPP&Aacute;&not;&frac12;&Oacute;type
    HRASCONN = DWORD;//&sup2;&brvbar;&ordm;&Aring;&Aacute;&not;&frac12;&Oacute;&frac34;&auml;±ú&micro;&Auml;&Agrave;à&ETH;&Iacute;
    RASCONN = record//&raquo;&icirc;&para;&macr;&micro;&Auml;&sup2;&brvbar;&ordm;&Aring;&Aacute;&not;&frac12;&Oacute;&micro;&Auml;&frac34;&auml;±ú&ordm;&Iacute;&Eacute;è&Ouml;&Atilde;&ETH;&Aring;&Iuml;&cent;
    dwSize : DWORD;//&cedil;&Atilde;&frac12;á&sup1;&sup1;&Euml;ù&Otilde;&frac14;&Auml;&Uacute;&acute;&aelig;&micro;&Auml;&acute;ó&ETH;&iexcl;(Bytes),
    // &Ograve;&raquo;°&atilde;&Eacute;è&Ouml;&Atilde;&Icirc;&ordf;SizeOf(RASCONN)
        hrasconn : HRASCONN;//&raquo;&icirc;&para;&macr;&Aacute;&not;&frac12;&Oacute;&micro;&Auml;&frac34;&auml;±ú
    szEntryName : array[0..RAS_MaxEntryName] of char;
     //&raquo;&icirc;&para;&macr;&Aacute;&not;&frac12;&Oacute;&micro;&Auml;&Atilde;&ucirc;&sup3;&AElig;
    szDeviceType : array[0..RAS_MaxDeviceType] of char;
    //&raquo;&icirc;&para;&macr;&Aacute;&not;&frac12;&Oacute;&micro;&Auml;&Euml;ù&Oacute;&Atilde;&micro;&Auml;&Eacute;è±&cedil;&Agrave;à&ETH;&Iacute;
    szDeviceName : array[0..RAS_MaxDeviceName] of char;
    //&raquo;&icirc;&para;&macr;&Aacute;&not;&frac12;&Oacute;&micro;&Auml;&Euml;ù&Oacute;&Atilde;&micro;&Auml;&Eacute;è±&cedil;&Atilde;&ucirc;&sup3;&AElig;
    end;
    TRASPPPIP = record//&raquo;&icirc;&para;&macr;&micro;&Auml;&sup2;&brvbar;&ordm;&Aring;&Aacute;&not;&frac12;&Oacute;&micro;&Auml;&para;&macr;&Igrave;&not;IP&micro;&Oslash;&Ouml;·&ETH;&Aring;&Iuml;&cent;
    dwSize : DWORD;//&cedil;&Atilde;&frac12;á&sup1;&sup1;&Euml;ù&Otilde;&frac14;&Auml;&Uacute;&acute;&aelig;&micro;&Auml;&acute;ó&ETH;&iexcl;(Bytes),
    //&Ograve;&raquo;°&atilde;&Eacute;è&Ouml;&Atilde;&Icirc;&ordf;SizeOf(TRASPPPIP)
        dwError : DWORD;//&acute;í&Icirc;ó&Agrave;à&ETH;&Iacute;±ê&Ecirc;&para;·&ucirc;
    szIpAddress : array[ 0..RAS_MaxIpAddress ] of char;
    //&raquo;&icirc;&para;&macr;&micro;&Auml;&sup2;&brvbar;&ordm;&Aring;&Aacute;&not;&frac12;&Oacute;&micro;&Auml;IP&micro;&Oslash;&Ouml;·
    end;  type
      TForm1 = class(TForm)
        Button1: TButton;
        Memo1: TMemo;
        function RasEnumConnections( var lprasconn : RASCONN ;var lpcb: DWORD;var lpcConnections : DWORD) : DWORD; stdcall;
        function RasGetProjectionInfo(hrasconn : HRasConn;rasprojection : DWORD;var  lpprojection : TRASPPPIP;var  lpcb : DWord) : DWORD;stdcall;
        procedure Button1Click(Sender: TObject);  private
    { Private declarations }
     public
        { Public declarations }
       end;var
      Form1: TForm1;
    implementation{$R *.dfm}function Tform1.RasGetProjectionInfo(hrasconn : HRasConn;rasprojection : DWORD;var  lpprojection : TRASPPPIP;var  lpcb : DWord) : DWORD;external'Rasapi32.dll' name 'funname2';function Tform1.RasEnumConnections( var lprasconn : RASCONN ;var lpcb: DWORD;var lpcConnections : DWORD) : DWORD;external 'Rasapi32.dll' name 'funname2';procedure TForm1.Button1Click(Sender: TObject);const
         MaxConnections = 10;//&frac14;&Ugrave;&Eacute;è×&icirc;&para;à&Oacute;&ETH;10&cedil;&ouml;&raquo;&icirc;&para;&macr;&micro;&Auml;&sup2;&brvbar;&ordm;&Aring;&Aacute;&not;&frac12;&Oacute;
    var   connections : array[0..MaxConnections-1] of RASCONN;
       //&sup2;&brvbar;&ordm;&Aring;&Aacute;&not;&frac12;&Oacute;&Ecirc;&yacute;×é
       longSize : dword;
       intAvailabelConnections : dword;
       //&raquo;&icirc;&para;&macr;&micro;&Auml;&sup2;&brvbar;&ordm;&Aring;&Aacute;&not;&frac12;&Oacute;&micro;&Auml;&Ecirc;&micro;&frac14;&Ecirc;&Ecirc;&yacute;&Auml;&iquest;
       intIndex : integer;
       strTemp : string;
       dwResult : DWORD;
       dwSize         : DWORD;
       RASpppIP     : TRASPPPIP;
    //&raquo;&icirc;&para;&macr;&micro;&Auml;&sup2;&brvbar;&ordm;&Aring;&Aacute;&not;&frac12;&Oacute;&micro;&Auml;&para;&macr;&Igrave;&not;IP&micro;&Oslash;&Ouml;·&ETH;&Aring;&Iuml;&cent;
    begin
      //libhandle:= LoadLibrary(';
        connections[ 0 ].dwSize := sizeof(RASCONN);
         longSize := MaxConnections * connections[ 0 ].dwSize;
    //&frac12;&Oacute;&Ecirc;&Otilde;&raquo;&icirc;&para;&macr;&Aacute;&not;&frac12;&Oacute;&micro;&Auml;&raquo;&ordm;&sup3;&aring;&Ccedil;&oslash;&acute;ó&ETH;&iexcl;
         intAvailabelConnections := 0;
         //&raquo;&ntilde;&Egrave;&iexcl;&Euml;ù&Oacute;&ETH;&raquo;&icirc;&para;&macr;&micro;&Auml;&sup2;&brvbar;&ordm;&Aring;&Aacute;&not;&frac12;&Oacute;&micro;&Auml;&ETH;&Aring;&Iuml;&cent;&pound;¨&Aacute;&not;&frac12;&Oacute;&frac34;&auml;±ú&ordm;&Iacute;&Eacute;è&Ouml;&Atilde;&ETH;&Aring;&Iuml;&cent;&pound;&copy;
         dwResult:= RasEnumConnections( connections[0],longSize,intAvailabelConnections );
         if 0 <> dwResult then
            memo1.lines.add( '&acute;í&Icirc;ó:' + inttostr( dwResult ) )
         else
             begin
                  memo1.lines.add( '&Iuml;&Ouml;&Oacute;&ETH;&micro;&Auml;&raquo;&icirc;&para;&macr;&Aacute;&not;&frac12;&Oacute;&Oacute;&ETH;' +
     IntToStr( intAvailabelConnections ) + '&cedil;&ouml;');
    //&Iuml;&Ocirc;&Ecirc;&frac34;&Euml;ù&Oacute;&ETH;&raquo;&icirc;&para;&macr;&micro;&Auml;&sup2;&brvbar;&ordm;&Aring;&Aacute;&not;&frac12;&Oacute;&micro;&Auml;&ETH;&Aring;&Iuml;&cent;&pound;¨&Eacute;è&Ouml;&Atilde;&ETH;&Aring;&Iuml;&cent;&ordm;&Iacute;&para;&macr;&Igrave;&not;IP&micro;&Oslash;&Ouml;·&pound;&copy;
            for intIndex := 0 to intAvailabelConnections - 1 do
                         begin
    //&Iuml;&Ocirc;&Ecirc;&frac34;&Ograve;&raquo;&cedil;&ouml;&raquo;&icirc;&para;&macr;&micro;&Auml;&sup2;&brvbar;&ordm;&Aring;&Aacute;&not;&frac12;&Oacute;&micro;&Auml;&Eacute;è&Ouml;&Atilde;&ETH;&Aring;&Iuml;&cent;
                              strTemp := '&Aacute;&not;&frac12;&Oacute;&Atilde;&ucirc;&sup3;&AElig;&pound;&ordm;'
     + StrPAS( connections[ intIndex ].szEntryName )
                                       + '&pound;&not;&Eacute;è±&cedil;&Agrave;à&ETH;&Iacute;&pound;&ordm;'
     + StrPAS( connections[ intIndex ].szDeviceType )
                                       + '&pound;&not;&Eacute;è±&cedil;&Atilde;&ucirc;&sup3;&AElig;&pound;&ordm;'
     + StrPAS( connections[ intIndex ].szDeviceName );
                              memo1.lines.add( strTemp );
     //&Iuml;&Ocirc;&Ecirc;&frac34;&Ograve;&raquo;&cedil;&ouml;&raquo;&icirc;&para;&macr;&micro;&Auml;&sup2;&brvbar;&ordm;&Aring;&Aacute;&not;&frac12;&Oacute;&micro;&Auml;&para;&macr;&Igrave;&not;IP&micro;&Oslash;&Ouml;·
                              dwSize := SizeOf(RASpppIP);
                              RASpppIP.dwSize := dwSize;
                              dwResult := RASGetProjectionInfo( connections[ intIndex ].hRasConn,RASP_PppIp,RasPPPIP,dwSize);//&raquo;&ntilde;&Egrave;&iexcl;&para;&macr;&Igrave;&not;IP&micro;&Oslash;&Ouml;·
                              if  0 <> dwResult then
                                  memo1.lines.add('&acute;í&Icirc;ó:' + inttostr( dwResult ))
                              else
                                  memo1.lines.add('&para;&macr;&Igrave;&not;&micro;&Oslash;&Ouml;·:' + StrPas(RASpppIP.szIPAddress));
                         end;
             end;
    end;end.
      

  2.   

    重发一遍
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;const
    RAS_MaxDeviceType = 16;//设备类型名称长度
    RAS_MaxEntryName = 256;//连接名称最大长度
    RAS_MaxDeviceName = 128;//设备名称最大长度
    RAS_MaxIpAddress = 15;//IP地址的最大长度
    RASP_PppIp = $8021;//拨号连接的协议类型,该数值表示PPP连接type
    HRASCONN = DWORD;//拨号连接句柄的类型
    RASCONN = record//活动的拨号连接的句柄和设置信息
    dwSize : DWORD;//该结构所占内存的大小(Bytes),
    // 一般设置为SizeOf(RASCONN)
        hrasconn : HRASCONN;//活动连接的句柄
    szEntryName : array[0..RAS_MaxEntryName] of char;
     //活动连接的名称
    szDeviceType : array[0..RAS_MaxDeviceType] of char;
    //活动连接的所用的设备类型
    szDeviceName : array[0..RAS_MaxDeviceName] of char;
    //活动连接的所用的设备名称
    end;
    TRASPPPIP = record//活动的拨号连接的动态IP地址信息
    dwSize : DWORD;//该结构所占内存的大小(Bytes),
    //一般设置为SizeOf(TRASPPPIP)
        dwError : DWORD;//错误类型标识符
    szIpAddress : array[ 0..RAS_MaxIpAddress ] of char;
    //活动的拨号连接的IP地址
    end;  type
      TForm1 = class(TForm)
        Button1: TButton;
        Memo1: TMemo;
    function RasEnumConnections( var lprasconn : RASCONN ;var lpcb: DWORD;var lpcConnections : DWORD) : DWORD; stdcall;function RasGetProjectionInfo(hrasconn : HRasConn;rasprojection : DWORD;var  lpprojection : TRASPPPIP;var  lpcb : DWord) : DWORD;stdcall;
        procedure Button1Click(Sender: TObject);  private
    { Private declarations }
     public
        { Public declarations }
       end;var
      Form1: TForm1;
    implementation{$R *.dfm}function Tform1.RasGetProjectionInfo(hrasconn : HRasConn;rasprojection : DWORD;var  lpprojection : TRASPPPIP;var  lpcb : DWord) : DWORD;external'Rasapi32.dll' name 'funname2';function Tform1.RasEnumConnections( var lprasconn : RASCONN ;var lpcb: DWORD;var lpcConnections : DWORD) : DWORD;external 'Rasapi32.dll' name 'funname2';procedure TForm1.Button1Click(Sender: TObject);const
         MaxConnections = 10;//假设最多有10个活动的拨号连接
    var   connections : array[0..MaxConnections-1] of RASCONN;
       //拨号连接数组
       longSize : dword;
       intAvailabelConnections : dword;
       //活动的拨号连接的实际数目
       intIndex : integer;
       strTemp : string;
       dwResult : DWORD;
       dwSize         : DWORD;
       RASpppIP     : TRASPPPIP;
    //活动的拨号连接的动态IP地址信息
    begin
      //libhandle:= LoadLibrary(';
        connections[ 0 ].dwSize := sizeof(RASCONN);
         longSize := MaxConnections * connections[ 0 ].dwSize;
    //接收活动连接的缓冲区大小
         intAvailabelConnections := 0;
         //获取所有活动的拨号连接的信息(连接句柄和设置信息)
         dwResult:= RasEnumConnections( connections[0],longSize,intAvailabelConnections );
         if 0 <> dwResult then
            memo1.lines.add( '错误:' + inttostr( dwResult ) )
         else
             begin
                  memo1.lines.add( '现有的活动连接有' +
     IntToStr( intAvailabelConnections ) + '个');
    //显示所有活动的拨号连接的信息(设置信息和动态IP地址)
            for intIndex := 0 to intAvailabelConnections - 1 do
                         begin
    //显示一个活动的拨号连接的设置信息
                              strTemp := '连接名称:'
     + StrPAS( connections[ intIndex ].szEntryName )
                                       + ',设备类型:'
     + StrPAS( connections[ intIndex ].szDeviceType )
                                       + ',设备名称:'
     + StrPAS( connections[ intIndex ].szDeviceName );
                              memo1.lines.add( strTemp );
     //显示一个活动的拨号连接的动态IP地址
                              dwSize := SizeOf(RASpppIP);
                              RASpppIP.dwSize := dwSize;
                              dwResult := RASGetProjectionInfo( connections[ intIndex ].hRasConn,RASP_PppIp,RasPPPIP,dwSize);//获取动态IP地址
                              if  0 <> dwResult then
                                  memo1.lines.add('错误:' + inttostr( dwResult ))
                              else
                                  memo1.lines.add('动态地址:' + StrPas(RASpppIP.szIPAddress));
                         end;
             end;
    end;end.