![]() |
ip auf gültigkeit prüfen
Hallo,
ich suche eine Möglichkeit um eine in ein textfeld eingegebe IP auf gültigkeit zu prüfen, also ob die schreibweise korrekt ist. |
Re: ip auf gültigkeit prüfen
Per RegExkomponente (z.B. vom LMD/ElPack) und der passenden
![]() |
Re: ip auf gültigkeit prüfen
es gibt doch auch von den indys eine Komponente die als IP-Maske dient :thumb:
:!: JvIpAdress :!: Viel Spaß damit ;-) |
Re: ip auf gültigkeit prüfen
Delphi-Quellcode:
Edit:
uses Winsock;
procedure TForm1.Button1Click(Sender: TObject); begin if inet_addr(PChar(edit1.Text))=INAddr_None then raise Exception.CreateFMT('%s ist keine gültige IP-Adresse',[edit1.text]); end; "255.255.255.255" müsste man bei dieser Version noch extra überprüfen. Beachte das auch "4" oder "4.6" eine gültige Adresse ist. |
Re: ip auf gültigkeit prüfen
Zitat:
Jv... ist doch wohl eher Jedi's Work :mrgreen: |
Re: ip auf gültigkeit prüfen
Hi, hab für Produktiv Systeme seit Jahren folgendes in Verwendung:
Delphi-Quellcode:
function TMainClass.CheckIPEx(s: string): Boolean;
var s1, s2, s3, s4: String; e, v, i, j, sum: Integer; bcLen: integer; ix: array[1..3] of integer; begin result := false; if (s = '0.0.0.0') then EXIT; j := 0; bcLen := Length(s); for i:= 1 to bcLen do begin if s[i] = '.' then begin inc(j); ix[j] := i; end; end; if j <> 3 then EXIT; s1 := copy(s, 1, ix[1] - 1); s2 := copy(s, ix[1] + 1, ix[2] - ix[1] - 1); s3 := copy(s, ix[2] + 1, ix[3] - ix[2] - 1); s4 := copy(s, ix[3] + 1, bcLen); sum := 0; Val(s1, v, e); if (e <> 0) or (v > 255) or (v < 0) or ((Length(s1) > 1) and (s1[1] = '0')) then EXIT; sum := sum + v; Val(s2, v, e); if (e <> 0) or (v > 255) or (v < 0) or ((Length(s2) > 1) and (s2[1] = '0')) then EXIT; sum := sum + v; Val(s3, v, e); if (e <> 0) or (v > 255) or (v < 0) or ((Length(s3) > 1) and (s3[1] = '0')) then EXIT; sum := sum + v; Val(s4, v, e); if (e <> 0) or (v > 255) or (v < 0) or ((Length(s4) > 1) and (s4[1] = '0')) then EXIT; sum := sum + v; if sum <> 0 then result := true; end; |
Re: ip auf gültigkeit prüfen
Oder ausführlich:
Delphi-Quellcode:
function isIP(const IP:AnsiString):boolean;
var RtlIpv4StringToAddress:function(s:PAnsiChar; //IP-Adresse Strict:Boolean; //zwingend 4 Teile durch Punkte getrennte Addresse out Terminator:PAnsiChar; out Addr:In_Addr):LongWord;stdcall; var Terminator:PAnsiChar; Addr:In_Addr; begin RtlIpv4StringToAddress:=GetProcAddress(GetModuleHandle('NTDll.DLL'), 'RtlIpv4StringToAddressA'); if assigned(RtlIpv4StringToAddress) then //sollte auf allen neueren WinVersionen verfügbar sein result:=RtlIpv4StringToAddress(PAnsiChar(IP),true,Terminator,Addr) =NO_ERROR else //falls das Windows zu alt ist result:=(inet_addr(PAnsiChar(IP))<>INAddr_None) or(IP='255.255.255.255'); end; |
Re: ip auf gültigkeit prüfen
Super, danke für die vielen Antworten.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz