我的应用程序使用unicode字符,我有几个文本字段,我想限制用户输入特殊字符,如:'“;
begin
if not (Key in ['a'..'z','A'..'Z',' ','0'..'9',#13,#8]) then
Key := #0;
if Key = #13 then
bOk.Click;
end;
所以此时它允许用户添加空格并使用退格键来擦除,当然还有输入密钥来确认。
我想要输入的unicode字符很少。 ą,č,ė,į,š,ų,ū,ž 和他们的大写替代品,但只是将它们添加到集合中......
Key in ['a'..'z','A'..'Z',' ','0'..'9',#13,#8,'ą'..'ž','Ą'..'Ž']
...什么都不做,我仍然不能在文本字段中写这些符号。
我想知道,如何解决这个问题。有没有办法判断按下的键是否是我正在寻找的unicode字符?
谢谢
答案 0 :(得分:7)
如果您使用的是D2009或更高版本,则会出现一个名为字符的单元,其中包含 IsLetterOrDigit , IsLetter 等功能。你需要。
答案 1 :(得分:4)
编译应用时请注意提示和警告。忽略它们就是忽略潜在的问题。
您应该收到警告:“WideChar减少为字节char ...”。问题在于:Key
在您的设置操作中不再是Unicode!
警告建议您使用CharInSet
;你也可以查看TCharacter
(一个带有类函数的特殊类来识别某些类别的字符)。如果这些都不符合您的要求,则使用字符串常量和所有有效字符,并使用Pos
函数确定Key
是否存在。
最后,您可能更愿意考虑排除特定字符,而不是试图考虑您想要包含的每个特定字符。