Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-08-2004
Avatar de DarkByte
DarkByte DarkByte is offline
Miembro
 
Registrado: sep 2003
Ubicación: Desconocido
Posts: 1.322
Poder: 22
DarkByte Va por buen camino
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.
__________________
:)
Responder Con Cita
  #2  
Antiguo 20-08-2004
cheewe cheewe is offline
Registrado
 
Registrado: ago 2004
Posts: 7
Poder: 0
cheewe Va por buen camino
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
Responder Con Cita
  #3  
Antiguo 20-08-2004
Avatar de yusnerqui
yusnerqui yusnerqui is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuba
Posts: 679
Poder: 21
yusnerqui Va por buen camino
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;
__________________
Lo importante no es llegar primero, sino saber llegar.

Para que puedas llegar mejor lee la Guia de Estilo


Última edición por yusnerqui fecha: 20-08-2004 a las 15:03:11.
Responder Con Cita
  #4  
Antiguo 20-08-2004
Avatar de __marcsc
__marcsc __marcsc is offline
Miembro
 
Registrado: may 2003
Ubicación: Girona
Posts: 577
Poder: 22
__marcsc Va por buen camino
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!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 16:42:14.


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
Copyright 1996-2007 Club Delphi