laojikelly 发表于 2009-4-7 22:07:08

[求助]如何判断输入框中是否输入有字符??

如何判断输入框中是否有输入有字符??以及如何限制输入框中只能输入数字或字母??
没找到这样的例子...热心人给个例子好吗??

[ 本帖最后由 laojikelly 于 2009-4-20 10:25 编辑 ]

akmm88 发表于 2009-4-7 22:25:33

正则表达式
StringRegExpReplace ( 编辑框内容, "[^0-9a-zA-Z]", "",)

laojikelly 发表于 2009-4-8 05:36:08

不懂。。。太深奥了。。。

sensel 发表于 2009-4-8 15:54:10

google "正则表达式",打开第一个 "正则表达式30分钟入门"

llztt 发表于 2009-4-8 22:21:08

如果只限制为数字,那个简单,在CREATEINPUT时加上限制数字的样式就OK了

如果需要其他限制,譬如只能输入汉字或只能输入XYZ,那个麻烦些了,论坛里有人谈论过的,一般是监控事件(譬如键盘按上按下),就是一有事件触发某函数进行检测(可用正则),如果有非法字符就把这字符给删掉。。。但这方法不是很完美的,需要考虑的事很多,譬如处理用户粘贴文字问题

laojikelly 发表于 2009-4-9 01:21:17

好的。。。既然那么多人都说正则表达式。。。那我就去看看了。。。

pusofalse 发表于 2009-4-9 02:02:45

#include <WinAPI.au3>

If not IsDeclared("WM_CHAR") Then CONST $WM_CHAR = 0x102
If not IsDeclared("WM_PASTE") Then CONST $WM_PASTE = 0x302
If not IsDeclared("WM_SETTEXT") Then CONST $WM_SETTEXT = 0xc

$hGUI = GUICreate("Test", 200, 100)

$iIptTest = GUICtrlCreateInput("", 20, 20, 160, 20)
$hIpt = GUICtrlGetHandle(-1)

$hIptProc = DllCallbackRegister("_IptProc", "int", "hWnd;uint;wparam;lparam")
$pIptProc = DllCallbackGetPtr($hIptProc)
$hOldProc = _WinAPI_SetWindowLong($hIpt, -4, $pIptProc)

GUISetState()

Do
Until guiGetMsg() = -3


Func _IptProc($hWnd, $iMsg, $wParam, $lParam)
        ConsoleWrite("0x" & Hex($iMsg) & @CRLF)
        If $iMsg = $WM_CHAR Then
                If $wparam <> 8 And $wparam < 128 Then
                        _WinAPI_MessageBeep(2)
                        Return False
                EndIf
        ElseIf $iMsg = $WM_PASTE Then
                If StringRegExp(ClipGet(), "[\x20-\x7f]") Then Return False
        ElseIf $iMsg = $WM_SETTEXT Then
                _WinAPI_MessageBeep(2)
                Return False
        EndIf
        Return _WinAPI_CallWindowProc($hOldProc, $hWnd, $iMsg, $wParam, $lParam)
EndFunc        ;==>_IptProc()
以上,限制只能输入/粘贴汉字。。。若限制只能输入英文和数字,把$wparam < 128 改为StringRegExp(Chr($wparam), "") = 0就好了。

[ 本帖最后由 pusofalse 于 2009-4-9 02:36 编辑 ]

ceoguang 发表于 2009-4-9 02:55:33

楼上的不错,学习了..........

ahphsautoit 发表于 2009-4-9 11:20:27

那个“正则表达式30分钟入门”我已经看过10遍了。感觉能看懂,但是需要大量的实践才能掌握。目前我还运用不到“正则表达式”,所以也没有详加研究。怎么讲呢,大凡能来研究AU3的,要弄通“正则”也应该不是难事。楼主,我们一起加油!
:face (29):

[ 本帖最后由 ahphsautoit 于 2009-4-9 11:21 编辑 ]

llztt 发表于 2009-4-9 14:11:53

正则是相通的,但凡学语言的 都会设计到的,学了绝对有用,各个语言里的正则区别很小的
另pusofalse的代码貌似很带劲哦,回头试试

漠北雪~狼 发表于 2009-4-10 10:27:06

GUICtrlCreateInput("", 10, 5, 300, 20, $ES_NUMBER)

laojikelly 发表于 2009-4-12 06:51:22

我想大家都误解我意思了。。。
我是想判断输入框里有没有输入字符,不是限制输入英文或者数字。
谢谢大家的回答。

sensel 发表于 2009-4-12 07:29:52

回复 12# laojikelly 的帖子

if $sRead = "" then ...

这个,,,这个,,,我倒。。。
真的要倒了。。。睡觉先,88~~~

mcknight1013 发表于 2009-4-12 13:29:52

大哥你直接说内容为空不就行了吗。。。

xg911335 发表于 2009-4-12 17:34:39

做个记号。
页: [1] 2
查看完整版本: [求助]如何判断输入框中是否输入有字符??