Search code examples
delphiipdelphi-7

How can I increase IP address by given number in Delphi?


I want to do someting like that:

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

after this code executed ip2 should be 127.0.0.2

Question is: How can I increase an IP address like that?


Solution

  • You might try the following:

    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;