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
A voir également:
Comment savoir si une adresse ip est valide
Savoir si une adresse ip est valide - Meilleures réponses
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');
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;