Icono
"Comprobar si un string contiene una IP válida"

 
 



En esta sección de Código Fuente en Delphi vamos a explicar cómo podemos comprobar si el texto contenido en un string es una dirección IP de internet válida.

Para ello, he escrito esta pequeña app de ejemplo.

Este código está formado por tres funciones: IsValidIP, IsValidByte y Sacar

La función IsValidIP utiliza a las otras dos funciones para poder realizar su tarea.

Ya sabemos que el formato de cualquier dirección IPv4 de internet es una cadena con la forma "a.b.c.d" donde las letras a b c y d son números enteros comprendidos entre 0 y 255 cada uno de ellos

Para comprobar que un string corresponde a este formato, la función IsValidIp lo que hace es "Sacar" las partes del string separadas por el punto "." y comprobar que cada una de esas 4 partes es un número comprendido en el rango 0..255

La función "Sacar" recibe como parámetro un string que será modificado por la propia función (parámetro tipo var) y el string que hace de separador (en nuestro caso el punto)


La función IsValidByte comprueba si la cadena recibida corresponde a un entero entre 0 y 255

La función IsValidIP realiza la tarea de "Sacar" el número y comprobar si es válido para cada una de los cuatro supuestos valores que deberían existir en la cadena recibida si fuese una IP correcta. Solamente devuelve el valor "True" en caso de haber podido realizar la comprobación correcta para esos 4 valores de deben formar la IP.

En la siguiente imagen puedes ver un ejemplo de uso de esta app en el que realizamos el comando "dir" sobre la misma carpeta en la que está el ejecutable.

A continuación, puedes ver el código completo de la app, y si lo deseas puedes descargarlo todo (código y app) en un archivo "zip".

Unit1.pas
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


function Sacar(var v:String; sep:String):String;
var p: integer;
begin
    p:= pos(sep,v);
    if (p>0) then begin
       result:= copy(v,1,p-1);
       v:= copy(v,p+length(sep),maxint);
    end else begin
       result:= v;
       v:='';
    end;
end;


function IsValidByte(const Value: string): Boolean;
var
  x, n: integer;
begin
  x := StrToIntDef(Value, -1);
  Result := (x >= 0) and (x < 256);
  if not Result then exit;
  for n := 1 to length(Value) do
   if not (AnsiChar(Value[n]) in ['0'..'9']) then Result:=false;
end;


function IsValidIP(const Value: string): Boolean;
var
  TempIP: string;
begin
  TempIP := Value;
  Result := False;
  if not IsValidByte(Sacar(TempIP, '.')) then Exit;
  if not IsValidByte(Sacar(TempIP, '.')) then Exit;
  if not IsValidByte(Sacar(TempIP, '.')) then Exit;
  if IsValidByte(TempIP) then Result := True;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  if IsValidIP(Edit1.Text) then
    Label2.Caption:= 'IP Válida'
  else
    Label2.Caption:= 'IP NO Válida';
end;

end.
Puede descargar el código fuente anterior con este enlace:
codigo-fuente-isvalidip.zip
Puede encontrar una versión Portable de Delphi en esta dirección:
http://www.andyaska.com/?act=download&id=34&mode=detail

O puede descargar la versión gratuita Delphi Starter directamente desde su web oficial: https://www.embarcadero.com/products/delphi/starter/free-download
 
Delphi Source Code
Is Valid IP



Descargar Is Valid IP Windows 10 Compatible


logo-MecaNet
Certificado de seguridad del sitio













© Carlos Miguel Cáceres García