Ejemplo de función Delphi (Pascal), que a partir de una dirección IP con ceros a la izquierda, del tipo 192.001.008.023, devuelve la IP correcta 192.1.8.23. En determinadas aplicaciones las direcciones IP se formatean con ceros a la izquierda para poder ordenarlas por pantalla, con este código Pascal podremos «limpiar» la IP para que sea correcta.
La función Delphi Pascal que a partir de una dirección IP con posibles ceros a la izquierda la formatea y quita los ceros sería:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
//Formatear IP del tipo 080.001.001.001 a 80.1.1.1 function formatearIP(ip : string) : string; var i, puntoEncontrado : integer; ipNueva, p1, p2, p3, p4 : string; begin //Si la ip no es del tipo x.x.x.x if Length(ip) > 7 then begin //Quitamos los posibles 0 a la izquierda en la IP //Obtenemos las cuatro partes de la IP en 4 variables ipNueva := ''; p1 := ''; p2 := ''; p3 := ''; p4 := ''; puntoEncontrado := 1; for i := 0 to length(ip) do begin if ip[i] <> '.' then if puntoEncontrado = 1 then p1 := p1 + ip[i] else if puntoEncontrado = 2 then p2 := p2 + ip[i] else if puntoEncontrado = 3 then p3 := p3 + ip[i] else p4 := p4 + ip[i] else puntoEncontrado := puntoEncontrado + 1; end; p1 := trim(p1); p2 := trim(p2); p3 := trim(p3); p4 := trim(p4); //Quitamos ceros a la izquierda en los cuatro valores if Length(p1) > 1 then begin if copy(p1, 0, 1) = '0' then //Si el primer caracter es 0 lo quitamos begin p1 := copy(p1, 2, length(p1)); //Si el segundo caracter es 0 lo quitamos salvo que quede 1 carácter if (length(p1) = 2) and (copy(p1, 0, 1) = '0') then p1 := copy(p1, 2, length(p1)); end; end; if Length(p2) > 1 then begin if copy(p2, 0, 1) = '0' then //Si el primer caracter es 0 lo quitamos begin p2 := copy(p2, 2, length(p2)); //Si el segundo caracter es 0 lo quitamos salvo que quede 1 carácter if (length(p2) = 2) and (copy(p2, 0, 1) = '0') then p2 := copy(p2, 2, length(p2)); end; end; if Length(p3) > 1 then begin if copy(p3, 0, 1) = '0' then //Si el primer caracter es 0 lo quitamos begin p3 := copy(p3, 2, length(p3)); //Si el segundo caracter es 0 lo quitamos salvo que quede 1 carácter if (length(p3) = 2) and (copy(p3, 0, 1) = '0') then p3 := copy(p3, 2, length(p3)); end; end; if Length(p4) > 1 then begin if copy(p4, 0, 1) = '0' then //Si el primer caracter es 0 lo quitamos begin p4 := copy(p4, 2, length(p4)); //Si el segundo caracter es 0 lo quitamos salvo que quede 1 carácter if (length(p4) = 2) and (copy(p4, 0, 1) = '0') then p4 := copy(p4, 2, length(p4)); end; end; result := p1 + '.' + p2 + '.' + p3 + '.' + p4; end else result := ip; end; |
Un ejemplo de uso de la función formatearIP:
1 2 3 4 5 6 7 |
var direccionIp : string; begin direccionIp := txtDireccionIP.Text; direccionIP := formatearIP(direccionIP); hacerPing (direccionIP); end; |
En el ejemplo anterior, la aplicación obtiene la dirección IP desde un cuadro de texto (txtDireccionIP), que puede tener el formato: 045.123.008.056, formateándola en 45.123.8.56. Y con la dirección IP correcta realiza un ping: