nachdem ich nun mitbekommen hatte, das man der Eigenschaft BoundIP des
Indy-TCPClients nur IPs eingeben kann, hatte ich ein Problem:
Ich habe ein Edit-Feld, dessen Inhalt aber auch (eigentlich logisch) Nicht-
IP-Adressen haben kann.
Daher habe ich diese FUnktion geschrieben, die eben prueft, ob es sich um eine korrekte
IP handelt..
Delphi-Quellcode:
function isIP(
IP:
string): boolean;
var
i, lastdot, amount, part: integer;
begin
// this function checks, whether a IP is a valid one
IP := '
.' +
IP;
lastdot := Length(
IP) + 1;
amount := 0;
result := True;
for i := (Length(
IP) + 1)
downto 1
do
begin
if IP[i] = '
.'
then
begin
try
part := StrToInt(Copy(
IP, i + 1, lastdot - i - 1));
lastdot := i;
Inc(amount);
// each part of the IP must be between 0 and 254
if (part < 0)
or (part > 254)
then result := False;
except
Result := False;
end;
end;
end;
//each IP has to contain 4 parts
if amount <> 4
then result := False;
end;
Aufrufen z.B. durch:
if not IsIP('thor') then showmessage('Keine IP')
Zwei Anmerkungen noch:
1. der except Abschnitt kann eigentlich auch leer gelassen werden, da z.B. bei '192.abc.169.85' amount nur 3 waere, sieht aber im Code irgendwie doof aus..
2. ich hoffe, das kann waer gebrauchen
Mat