--------------怎么样判断用户输入的全是汉字?-----------------

DD88 2001-09-12 10:13:18
现在要对DBEdit中输入的信息进行判断,要求必须是中文,不能有字母和数字,要怎么办?希望可以给出代码?
...全文
163 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
launch 2001-09-17
  • 打赏
  • 举报
回复
var
wstr:widestring;
i,j:integer;
begin
edit1.text:=trim(edit1.text);
wstr:=edit1.text;
i:=length(wstr)*2;
j:=length(edit1.text);
if i<>j then showmessage('请输入汉字');
end;
这个是绝对Work的;只要你的系统是双字节(unicode)系统<中文Win98,中文Win2k,中文WinNT>;
使用 widestring时,无论是一个汉字或一个英文字母,他计算的长度是1;
而使用string时,一个汉字长度是2,一个英文字母的长度是1;

madyak 2001-09-14
  • 打赏
  • 举报
回复
第一个字节的ASC码小于128的,也有汉字!大家说的判断方法只适合于GB2312,对GBK就不能适用了!真得要判断准确,很难,关键没有GBK的资料!
lldwolf 2001-09-14
  • 打赏
  • 举报
回复
分数这么少,答的这么多,可见是菜问题
var
i,english_count:integer;
str:string
begin
str:=edit1.text;
english_count:=0;
for i=1 to length(str) do
begin
if word(str[i])<127 then english_count:=english_count+1;
end;
showmessage(pchar('共有'+inttostr(english_count)+'个英文字母'))
end;
yangjiongyi 2001-09-14
  • 打赏
  • 举报
回复
判断第一个字符的ASC码〉128就好了。
Borland_Delphi 2001-09-14
  • 打赏
  • 举报
回复
var i:integer;
begin
for i:=1 to length(edit1.text)-1 do
if (edit1.text[i] in [#$A1..#$FE]) then
Result:=True; //是汉字
DD88 2001-09-14
  • 打赏
  • 举报
回复
用ASCII码吗?怎么判断?
DD88 2001-09-14
  • 打赏
  • 举报
回复
to lwk_hlj
怎么判断是不是英文字符?
lwk_hlj 2001-09-14
  • 打赏
  • 举报
回复
你先判断是不是英文字符好像比判断汉字简单啊
launch 2001-09-14
  • 打赏
  • 举报
回复
纯粹是误炸..我对此表示遗憾,不是道歉;
因为我是根据9x 年Delphi提供的资料的.NI
launch 2001-09-14
  • 打赏
  • 举报
回复
是错了一点;
var
wstr:widestring;
i,j:integer;
begin
edit1.text:=trim(edit1.text);
wstr:=edit1.text;
i:=length(wstr)*2;
j:=length(edit1.text);
if i<>j then showmessage('请输入汉字');
end;
launch 2001-09-14
  • 打赏
  • 举报
回复
怎么会不行呢;我试过好的阿
DD88 2001-09-13
  • 打赏
  • 举报
回复
launch的方法的确实现不了.
有别的方法吗?
DD88 2001-09-13
  • 打赏
  • 举报
回复
launch(飞星子) 的方法好象不行
windflow 2001-09-13
  • 打赏
  • 举报
回复
launch的方法要改成这样:
var
wstr:widestring;
i,j:integer;
begin
wstr:=edit1.text;
i:=length(wstr);
j:=edit1.gettextlen*2;
if i<>j then showmessage('请输入汉字');
end;
edit1.gettextlen是用单字节计算,汉字占两个字节,字母数字占一个字节。
softcool 2001-09-13
  • 打赏
  • 举报
回复
通过Ascii码判断,如果ascii码小于128的就不是汉字
zzy1012 2001-09-13
  • 打赏
  • 举报
回复
gz
launch 2001-09-13
  • 打赏
  • 举报
回复
var
wstr:widestring;
i,j:integer;
begin
wstr:=edit1.text;
i:=length(wstr);
j:=length(edit1.text)*2;
if i<>j then showmessage('请输入汉字');
end;
梅文海 2001-09-12
  • 打赏
  • 举报
回复
Windows.IsDBCSLeadByte 可以判断一个字节是否落在汉字区内.

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧