Hallo Gemeinde,
mit der Func Keyproc lese ich vom Kartenleser eine Ausweisnummer ein. Jetzt hat sich herausgestellt, dass es nicht nur 6-stellige Ausweisnummern gibt, sondern auch 5-stellige.
Um sicherzustellen, das auch anders-stellige außer 6-stellige nummern ausgelesen werden können habe ich den Leser so konfiguriert, das er nach dem Einlesen der Ziffern einen Zeilenvorschub
übergibt. Jetzt möchte ich den Zeilenvorschub mit StringRegExp abfangen. Aber das funktioniert nicht, da die Func so geschrieben ist, das er keine Zeichen außer die Zahlen 0-9 annimmt.
Ich habe den CHR-Range auf 13 erweitert, sodass CR und LF ebenfalls "erlaubt sind" aber das funktioniert nicht. Könnte mir jemand sagen was ich übersehen habe? Könnte es sein das ich die Variable
$sPattern nicht richtig deklariert habe?
Func _KeyProc($nCode, $wParam, $lParam)
$sPattern = @CRLF
If Not $g_bScanActiv Then Return _WinAPI_CallNextHookEx($g_hHook, $nCode, $wParam, $lParam)
Local $tKEYHOOKS, $sChar
$tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
If $nCode < 0 Then Return _WinAPI_CallNextHookEx($g_hHook, $nCode, $wParam, $lParam)
If $wParam = $WM_KEYDOWN Then
$sChar = Chr($tKEYHOOKS.vkCode)
If StringRegExp($sChar, '[0-13]') Then ; $sChar kann jetzt nur "0 - 13" enthalten (nicht von NUMPAD-Eingabe), CHr10 - 13 = CR und lf
$g_sAusweisNr &= $sChar ; Speichern der einzelnen Zeichen in $g_sAusweisNr zur kompletten Ausweisnr
If StringRegExp($sChar, $sPattern) Then
Exit ($g_sAusweisNr)
EndIf
Else ; irgendein Nicht-Ziffer Zeichen - FEHLER
$g_sAusweisNr = '' ; $g_sAusweisNr leeren
Exit (815)
EndIf
Return -1 ; Eingabe wird nicht an das System weitergeleitet
EndIf
Return _WinAPI_CallNextHookEx($g_hHook, $nCode, $wParam, $lParam)
EndFunc ;==>_KeyProc
Alles anzeigen