是这样的:我想做一个扫描ip字段的程序,就是把第一个ip地址到第二个ip地址中间的ip地址扫描出来,显示在listView里。ipedit控件的“ipString”属性是xxx.xxx.xxx.xxx的,我想要像for a:=0 to 10 do 这样去做一个循环,但是xxx.xxx.xxx.xxx又不是数字,也不知道怎样转换成数字,我想过给每一段都做一个循环,但是怎样才能和这个ipedit联系上呢?拜托大家了!

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      vStrList: TStringlist;
      i: integer;
      IP1,IP2,IP3,IP4: integer;
    begin
      vStrList := TStringList.Create;
      try
        vStrList.Delimiter :='.';
        vStrList.DelimitedText := Edit1.Text;
        IP1 := StrToInt(vStrList[0]);
        IP2 := StrToInt(vStrList[1]);
        IP3 := StrToInt(vStrList[2]);
        IP4 := StrToInt(vStrList[3]);
        for i:=IP4 to 255 do
        begin
          memo1.Lines.Add(IntToStr(IP1)+'.'+IntToStr(IP2)+'.'+IntToStr(IP3)+'.'+inttostr(i));
        end;
      finally
        vStrList.free;
      end;
    end;
      

  2.   

      TIPAddress = packed record
        case Integer of
          0: (
            Field1: Byte;
            Field2: Byte;
            Field3: Byte;
            Field4: Byte;);
          1: (
            Value: Integer;);
      end;function StrToIP(IP: string): TIPAddress;
    var
      i: Integer;
      slTmp: TStringList;
    begin
      slTmp := TStringList.Create;
      try
        slTmp.Delimiter := '.';
        slTmp.DelimitedText := IP;
        if slTmp.Count <> 4 then Exit;
        for i := 0 to 3 do
          Result.Value := Result.Value shl 8 + StrToInt(slTmp[i]);
      finally
        slTmp.Free;
      end;
    end;function IPToStr(IP: TIPAddress): string;
    begin
      Result := IntToStr(IP.Field1) + '.'
          + IntToStr(IP.Field2) + '.'
          + IntToStr(IP.Field3) + '.'
          + IntToStr(IP.Field4);
    end;
      

  3.   

    判断范围或者IP加一直接操作IPAddress.Value就行了