1

我想做这样的事情:

var
ip,ip2: string;
begin
ip:= '127.0.0.1';
ip2:= ip+1;
end;

执行此代码后,ip2 应为 127.0.0.2

问题是:我怎样才能增加这样的IP地址?

4

2 回答 2

13

使用 api,作为替代方案:

uses
  winsock;

procedure TForm1.Button1Click(Sender: TObject);
var
  addr: in_addr;
begin
  addr.S_addr := htonl(ntohl(inet_addr('127.0.0.1')) + 1);
  ShowMessage(inet_ntoa(addr));
end;
于 2013-07-20T00:20:15.957 回答
9

您可以尝试以下方法:

type
  TIPAddress = array[0..3] of Byte;

function IncIPAddress(const IPAddress: TIPAddress;
  Value: Integer = 1): TIPAddress;
begin
  PInteger(@Result)^ := PInteger(@IPAddress)^ + Value;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  S: string;
  IPAddress: TIPAddress;
  IPAddress2: TIPAddress;
begin
  IPAddress[3] := 127;
  IPAddress[2] := 0;
  IPAddress[1] := 0;
  IPAddress[0] := 1;

  S := Format('%d.%d.%d.%d', [IPAddress[3], IPAddress[2],
    IPAddress[1], IPAddress[0]]);
  ShowMessage(S);

  IPAddress2 := IncIPAddress(IPAddress);

  S := Format('%d.%d.%d.%d', [IPAddress2[3], IPAddress2[2],
    IPAddress2[1], IPAddress2[0]]);
  ShowMessage(S);
end;
于 2013-07-19T23:39:03.360 回答