Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Obtener tres primeras partes de una ip (https://www.clubdelphi.com/foros/showthread.php?t=13493)

DarkByte 20-08-2004 11:28:38

Obtener tres primeras partes de una ip
 
¡Buenas!, hace tiempo me acerqué por aquí con una pregunta similar, cómo obtener el último trozo (de 192.168.1.25, obtener 25) ahora he creado esta función, pero no me funciona, pues me devuelve lo que sería 192. de 192.168.1.25 en vez de, como quiero, 192.168.1.

Código Delphi [-]
  function TresTrozos(Ip:string):string;
  var
    posicion,i:integer;
    direccion:string;
  begin
    direccion := ip;
    for i:=1 to 3 do begin
      posicion := Pos('.', Direccion);
      If I = 3 Then
      begin
        Delete(Direccion, posicion, Length(Direccion));
        Result := Direccion;
      end;
    end;
  end;

Gracias simplemente, por el tíempo empleado en leer esto.

cheewe 20-08-2004 12:03:22

function TresTrozos(Ip:string):string;
var
posicion,i:integer;
direccion:string;
begin
direccion := ip;
for i:=1 to 3 do begin
posicion := Pos('.', Direccion); <- El problema esta aqui. Encuentra siempre la primera ocurrencia de '.', con lo que al final desecha todo menos la primera parte de la direccion
If I = 3 Then
begin
Delete(Direccion, posicion, Length(Direccion));
Result := Direccion;
end;
end;
end;


Prueba con esto


repeat
siguiente:=Pos('.',Direccion);
if siguiente<>0 then
begin
Trozo := copy(parametros,1,siguiente-1);
Direccion := Copy(Direccion, Siguiente +1, Length(Direccion) -Siguiente);
end
else Trozo := copy(Direccion,1,length(Direccion));
Until (siguiente=0);

Result := Trozo;

En cada una de las iteraciones del bucle tendras las partes de la IP. Puedes hacer con ellas lo que necesites.

Un saludo

yusnerqui 20-08-2004 14:43:35

Mira este otro
 
Este tambien funciona:

Código Delphi [-]
function TForm1.Trozo(IP: string): String;
var
i : Byte;
Aux : String;
begin
for i := length(IP) downto 1 do
Aux := Aux + IP[i];
i := pos('.', Aux);
Result := copy(IP,1,length(IP)-i);
end;

__marcsc 20-08-2004 14:47:10

Un poco más corto, de nuevo con la función LastDelimiter:

Código Delphi [-]
function TresTrozos(IP: String): String;
begin
  Result:= Copy(IP,1,LastDelimiter('.',IP)-1));
end;

Saludos! ;)


La franja horaria es GMT +2. Ahora son las 08:03:13.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi