var c:integer;
    reg:TRegiStry;
    s:Array[0..255] of char;
begin
    ........
...................
         
    c:=Reg.GetDataSize('IPAddress');
             fillchar(s,255,#0);
             Reg.ReadBinaryData('IPAddress',S,c);
    //如果多个IP地址的话,那么此S的数组里就用#0分割了
end;

解决方案 »

  1.   

    自己写个函数判断
    或者你用socket里面的函数inet_addr()  它把一个字符串转换为IP地址格式
      

  2.   

    1.必须用注册表读取(win2000的)
    2。我已经读取了字符串'192.168.0.1'#0'192.168.10.1'#0#0
    3。但是我不知道怎么把上面的字符串分别读取倒Memo上
    如:
    192.168.0.1
    192.168.10.1
    因为String是以#0结尾的,所以#0后面的就读不出来了!!
    着急中。
      

  3.   

    我的代码:
    function GetIfaceInfo(NameType:integer;StrID:String):String;
    const
      NetWorkReg ='SYSTEM\CurrentControlSet\Control\Network\';
      DevInfoReg ='SYSTEM\CurrentControlSet\Enum\';
      IPAddreReg ='SYSTEM\CurrentControlSet\Services\';
    var
      Reg:TRegistry;
      S:String;
      c:integer;
    begin
      RegPath:=IPAddreReg+StrID+'\Parameters\Tcpip\';
              if Reg.OpenKey(RegPath,False) then
              begin
                 c:=Reg.GetDataSize('IPAddress');
                 SetLength(S,C);             Reg.ReadBinaryData('IPAddress',PChar(S)^,c);
                 ShowMessage(S);//此时如果查看S的值是串'192.168.0.1'#0'192.168.10.1'#0#0,但是ShowMessage后就变成了192.168.0.1了
    不能把多个IP显示出来了!!
    ????????????????end;
      

  4.   

    要不是DelphiBBS今天上不屈了,真懒的来这里,结果还是让人失望。
      

  5.   

    Reg.ReadBinaryData('IPAddress',s[1],c);
      

  6.   

    这里比DelphiBBS差么???晕,delphi自己完不成的东西,你不能自己写个函数判断么???
      

  7.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      strsz,i:integer;
      str:array[0..255]of char;
      tmp:string[20];
      strlst:TStringList;
    begin
      strlst:=TStringList.Create;
      strlst.Clear;
      strsz:=length('192.168.0.1'#0'192.168.10.1'#0#0);
      str:='192.168.0.1'#0'192.168.10.1'#0#0;
      tmp:='';
      for i:=0 to strsz-1 do
      begin
        if ((i<strsz) and (str[i]=#0)) then
        begin
         strlst.Add(tmp);
         showmessage(tmp);
         tmp:='';
         if(str[i+1]<>#0) then
           continue
         else
           break;
        end;
         tmp:=tmp+str[i];
      end;
      strlst.Destroy;
    end;
    如果你要用memo,写上  form1.Memo1.Lines:=strlst;就可以了
    给分吧