如何在Delphi中按给定数量增加IP地址?

时间:2013-07-19 23:15:34

标签: delphi ip delphi-7

我想做那样的事情:

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

执行此代码后,ip2应为127.0.0.2

问题是:如何增加这样的IP地址?

2 个答案:

答案 0 :(得分:12)

使用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;

答案 1 :(得分:8)

您可以尝试以下方法:

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;