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

Reply via email to