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 に答える