Remplacer dernier morceau d'une adresse IP

Résolu
celtic00 Messages postés 4 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 24 mars 2005 - 23 mars 2005 à 18:31
cs_ManChesTer Messages postés 374 Date d'inscription vendredi 20 octobre 2000 Statut Modérateur Dernière intervention 15 janvier 2021 - 25 mars 2005 à 00:01
Bonjour,

Pour des besoins professionnels, je dois faire un petit soft.
Dans ce soft je dois entrer l'IP et le gateway.
Chez nous, le gateway est toujours l'IP se terminant par 200.
Petit exemple : si IP = 192.168.0.1 alors le gateway sera 192.168.0.200

A l'aide d'une petite fonction (dont la base a été trouvée sur ce site), j'arrive à "mettre à jour en temps" réel le gateway par rapport à l'IP (quand j'entre un chiffre dans l'edit box de lIP, il entre automatiquement dans l'edit du gateway).
Comme edit box, j'utilise une TJvIPAdress du composant Jedi.

Mon problème vient de la dernière portion qui doit être remplacée par le 200.
J'ai bien des idées théoriques mais la pratique ne marche pas du tout.

Quelqu'un pourrait-il m'aider ?

Merci beaucoup,
Celt

7 réponses

japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
23 mars 2005 à 19:19
Heu, tu peux enlever PosPoint, c'est un résidu d'essai, donc :



function IP2Gateway(IP: String): String;

var i: Integer;

begin

Result := '';

for i := Length(IP) downto 1 do

if Ip[i] = '.' then

begin

Delete(IP, i +1, 3);

Break;

end;

Result := IP + '200';

end;




Bonne prog'
3
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
23 mars 2005 à 19:15
Si j'ai bien compris, c'est un travail classique sur les strings.



Vite fait :



function IP2Gateway(IP: String): String;

var i, PosPoint: Integer;

begin

Result := '';

for i := Length(IP) downto 1 do

if Ip[i] = '.' then

begin

Delete(IP, i +1, 3);

Break;

end;

Result := IP + '200';

end;



Bonne prog'
0
cs_ManChesTer Messages postés 374 Date d'inscription vendredi 20 octobre 2000 Statut Modérateur Dernière intervention 15 janvier 2021
23 mars 2005 à 20:15
En plus rapide :

Function IP2Gateway(IP: String): String;
var P:Pchar;
Begin
Result:='';
P:=StrRScan(Pchar(Ip),'.');
If P<>Nil then
begin
Delete(ip,Length(ip)-StrLen(p),StrLen(p));
Result:=ip+'.200';
end;
end;

Si probleme le resultat seras vide ('');

If IP2Gateway('127.0.0.1')<>'' then
Showmessage('Le gateway est '+IP2Gateway('127.0.0.1')
else
Showmessage('Erreur lors de la conversion du getaway, veullez introduitre une ip valide');

Bon Coding ....

ManChesTer.
0
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
23 mars 2005 à 21:11
Salut, ManChesTer.



Ca me rappelle quelque chose... (test if then else vs case of).



Dans une boucle de 1 à 100000, ma méthode semble plus rapide que la tienne de 10% au moins.

Mais je n'ai pas mesuré finement...



Bonne prog'



japee
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
celtic00 Messages postés 4 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 24 mars 2005
24 mars 2005 à 14:00
Merci beaucoup.
Ca marche nickel.

Celt
0
cs_ManChesTer Messages postés 374 Date d'inscription vendredi 20 octobre 2000 Statut Modérateur Dernière intervention 15 janvier 2021
24 mars 2005 à 23:58
Yop Japee ;o))

Ca doit dépendre de la version et des options de compil, moi sur ma bécane sous d7 pour 10.000 execution j'ai (plus le chiffe est bas +c rapide):

896 pour ta routine
544 pour ma routine
421 pour la routine ci dessous (une obtimisation de la 1ere qui vire le strlength (inutile))

Function IP2Gateway(IP: String): String;
var P:Pchar;
Begin
Result:='';
P:=StrRScan(Pchar(Ip),'.');
If P=Nil then exit;
Delete(ip,Length(ip)-([mailto:p-@ip),4 p-@ip),4]);
Result:=ip+'.200';
end;

Bon Coding ....

ManChesTer.
0
cs_ManChesTer Messages postés 374 Date d'inscription vendredi 20 octobre 2000 Statut Modérateur Dernière intervention 15 janvier 2021
25 mars 2005 à 00:01
Arf vi,
Note que ton code est plus rapide pour un .1 que pour un .123
et pour contenter tous le monde mes test on été faits avec 127.0.0.99

Bon Coding ....

ManChesTer.
0
Rejoignez-nous