Hab mal eben eine Funktion geschrieben, die die deutsche Personalausweisnummer auf ihre Richtigkeit überprüft
[autoit]#include <GUIConstants.au3>
[/autoit][autoit][/autoit][autoit]$gui = GUICreate("Pesonalausweis Überprüfer",350,100)
GUICtrlCreateLabel("Personalausweisnummer:",10,24)
$input = GUICtrlCreateInput("",135,20,190,24,$ES_NUMBER)
$button = GUICtrlCreateButton("Überprüfen",150,60)
GUISetState(@SW_SHOW)
While 1
;Damit man nur 10 Ziffern eingibt..
if StringLen(GUICtrlRead($input)) > 10 Then
GUICtrlSetData($input,StringLeft(GUICtrlRead($input),10))
SoundPlay(@WindowsDir & "\media\Windows XP-Ping.wav",0) ;Fehlergeräusch
EndIf
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $button
$result = _PersonalausweisCheck(GUICtrlRead($input))
If $result = 1 Then
MsgBoX(0,"WohoO","Die Nummer war gültig." & @CRLF & @CRLF & 'Der "Ab 18 Bereich" ist nun für Sie zugänglich.')
Else
MsgBox(16,"Oh oh","Die Nummer stimmt leider nicht." & @CRLF & @CRLF & "Bitte versuchen Sie's erneut oder benutzen Sie die von" & _
@CRLF & "ihren Eltern um in den XXX-Bereich zu gelangen.")
EndIf
EndSwitch
WEnd
Func _PersonalausweisCheck($iNumber)
; Checkt, ob die Personalausweisnummber stimmt (nur die ersten 10 Ziffern, ohne das "D" am Ende
If NOT StringLen($iNumber) = 10 Then
Return -1
EndIf
Local $result = 0
For $i = 1 To 9
Switch Mod($i,3)
Case 1
$result += StringMid($iNumber,$i,1) * 7
Case 2
$result += StringMid($iNumber,$i,1) * 3
Case 0
$result += StringMid($iNumber,$i,1) * 1
EndSwitch
Next
If StringMid($iNumber,10,1) = (Mod($result,10)) Then
Return 1
Else
Return 0
EndIf
EndFunc
Vielleicht kann's ja jemand gebrauchen
(Evtl schreib ich auch eine Funktion, die einem eine Nummer sogar erstellt ;D)
MfG,
FaNtA