The IP-Adress is a dword, but you can change, that it fits for you.
function str_getval( str : shortstring ) : longint; var cod : longint; begin val( str , result , cod ); end; function ip_from_string( ipstr : shortstring ; out error : boolean ) : dword; var c : char; ipn , pointanz : longint; x : longint; pstr : shortstring; ip : dword; procedure add_ip; begin ipn := str_getval( pstr ); if ( ipn > 255 ) or ( pstr = '' ) then error := true; ip := ip shl 8; ip := ip or ipn; pstr := ''; end; begin ip := 0; pstr := ''; error := false; pointanz := 0; for x := 1 to length( ipstr ) do begin c := ipstr[ x ]; case c of '0'..'9' : pstr := pstr + c; '.' : begin inc( pointanz ); add_ip; end; else error := true; end; end; add_ip; if pointanz <> 3 then error := true; if error then result := 0 else result := ip; end; Am Donnerstag, 28. Juli 2016, 10:14:10 schrieb Koenraad Lelong: > Hi, > > I need a way to test if an string containing an ipv4-address is really > an ipv4-address. > I tried > tmpAddress:=HostAddrToStr(StrToHostAddr(IPAddressStr)); > writeln(tmpAddress); > if (tmpAddress='0.0.0.0') then > begin > writeln('Error in IP-address'); > IPAddressStr:=tmpAddress; > end; > When I enter 192.168.185.297 (i.e. not a valid ipv4 address) in > IPAddressStr I get > 192.168.185.41 > not the expected error-message. > > According to the rtl-manual : > > function StrToHostAddr(IP: AnsiString) : in_addr > Description: StrToHostAddr converts the string representation in IP to a > host address and returns the host > address. > Errors: On error, the host address is filled with zeroes. > > I would think that converting those zeroes to a host-address would yield > 0.0.0.0. > > Am I missing something ? > Is there a better way, without using some other network-library ? > > Koenraad. > _______________________________________________ > fpc-pascal maillist - fpc-pascal@lists.freepascal.org > http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal