Hi,
brauchte für eins meiner Skripte eine Funktion um eine IPv4-Adresse auf ihre Korrektheit zu überprüfen (Kein ping!) Dazu habe ich mir folgende Funktion geschrieben:
_IsIPv4_bak:
Spoiler anzeigen
#cs ----------------------------------------------------------------------------
UDF Name..........: _IsIPv4_bak
UDF Version.......: 1.0
Change Date.......: 2007-08-28
UDF Description...: Checks if a variable is an IPv4 address.
Author(s).........: teh_hahn <[email='sPiTsHiT@gmx.de'][/email]>
Company...........: none
URL...............: http://www.autoit.de/
Parameter(s)......: $S_IP - Specifies the IPv4 address.
Return Value......: Success: Returns 1
Failure: Returns 0
AutoIt Version....: 3.2.6.0
Note(s)...........: none
#ce ----------------------------------------------------------------------------
Func _IsIPv4_bak(Const $S_IP)
If StringRegExp($S_IP, "[12]?[0-9]{1,2}\.[12]?[0-9]{1,2}\.[12]?[0-9]{1,2}\.[12]?[0-9]{1,2}") Then
Local Const $A_IPSPLIT = StringSplit($S_IP, ".")
For $i = 1 To $A_IPSPLIT[0]
If Int($A_IPSPLIT[$i]) > 255 Then Return (SetError(1, 0, 0))
Next
Return (1)
EndIf
Return (SetError(2, 0, 0))
EndFunc ;==>_IsIPv4_bak
Ich denke mal, die kann der Ein oder Andere bestimmt auch mal gebrauchen!
EDIT1: OK, ich gebe mich geschlagen, Deine Funktion ist eindeutig performanter! Hier nochmal:
_IsIPv4:
Spoiler anzeigen
#cs ----------------------------------------------------------------------------
UDF Name..........: _IsIPv4
UDF Version.......: 1.0
Change Date.......: 2007-08-19
UDF Description...: Checks if a variable is an IPv4 address.
Author(s).........: Thorsten Willert <[email='thorsten.willert@gmx.de'][/email]>
Company...........: none
URL...............: http://www.autoit.de/
Parameter(s)......: $S_IP - Specifies the IPv4 address.
Return Value......: Success: Returns 1
Failure: Returns 0
AutoIt Version....: 3.2.6.0
Note(s)...........: none
#ce ----------------------------------------------------------------------------
Func _IsIPv4(Const $S_IP)
If StringRegExp($S_IP, "\A(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])\z") Then Return (1)
Return (0)
EndFunc ;==>_IsIPv4
EDIT2:
@huggy. Hast natürlich Recht. Schon gefixed. Wollte es bloß einheitlich zur Übersicht haben!