HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2021
1218
George文字の制限について3未解決


George

リンク

2021/12/18(Sat) 18:50:01|NO.94720

inputで名前を入力する際、
名前にA-Z 0-9しか入力できないようにする。ということはできないでしょうか>_<



この記事に返信する


zrs90(5さい)

リンク

2021/12/18(Sat) 20:33:16|NO.94721

古いので、hsp3.6で、動作不明ですが...
過去板記事に、こんなのがありました。
動作出来なかったら、申し訳ない。

http://hsp.tv/play/pforum.php?mode=pastwch&num=5607



沢渡

リンク

2021/12/19(Sun) 21:40:23|NO.94730

zrs90さんのリンク先のpizza氏のコードがおおむね答えになっていると思いますが、
おかしいと思われる部分を一部修正させていただきました。
また、アルファベットの小文字を大文字に直す処理を追加したので、もし不要ならば
"//*"のコメントがついた行を削除してください。

#include "kernel32.as" #include "user32.as" #define EN_CHANGE 0x00000300 #define WM_COMMAND 0x0111 #define EM_GETSEL 0x00B0 #define EM_SETSEL 0x00B1 sdim pass,256 input pass : iInput = stat ;文字列型input button "output", *lb_output oncmd gosub *lb_OnCommand, WM_COMMAND flag = 1 stop *lb_OnCommand if lparam != objinfo(iInput, 2) : return if (wparam>>16&0xFFFF) == EN_CHANGE && flag { l = strlen(pass) sdim tmp, l+1 offset = 0 count = 0 upper = 0 //*小文字から大文字への変換が行われたフラグ(不要なら削除してください) repeat l c = peek(pass, cnt) // 2byte文字か調べる IsDBCSLeadByte c if stat : count++ : continue cnt+2 // アルファベットと数字か調べる IsCharAlphaNumeric c if stat == 0 : count++ : continue cnt+1 if (c>='a')&(c<='z') : c-=0x20 : upper=1 //*小文字を大文字に変換(不要なら削除してください) // 半角英数ならtmpに追加 poke tmp, offset, c offset++ loop if count|upper { //*小文字から大文字への変換が不要なら"|upper"を削除してください // inputの更新とキャレット位置の調整 i=0 : sendmsg objinfo(iInput, 2), EM_GETSEL, varptr(i), 0 pass = tmp flag = 0 //oncmd 0でも可 objprm iInput, pass ; 実行しなくても内部では半角英数のみになっている flag = 1 //oncmd 1でも可 sendmsg objinfo(iInput, 2), EM_SETSEL, i-count, i-count return 0 } } return *lb_output mes pass stop



zrs90(5さい)

リンク

2021/12/19(Sun) 22:19:24|NO.94731

沢渡さんへ

修正だけでなく、アルファベットの小文字/大文字の対応まで
配慮していただき、ありがとうございます。助かりました。



ONION software Copyright 1997-2023(c) All rights reserved.