不知道为什么判断字母或数字那块不执行 function isnumber(s:String):boolean; var i:integer; begin result:=true; s:=trim(s); for i:=1 to length(s) do begin if not(s[i] in['0'..'9']) then break; end; result:=false; end; function ischar(s:string):boolean; var i:integer; begin result:=true; s:=trim(s); for i:=1 to length(s) do begin if not(s[i] in ['a'..'z','A'..'Z']) then break; end; result:=false; end;procedure TForm4.Button1Click(Sender: TObject); var sqlstr:string; begin if edit1.text='' then begin showmessage('密码错误'); edit1.SetFocus; exit; end; if (edit2.text='') or (edit3.text='') then begin showmessage('密码不能为空'); edit2.SetFocus; exit; end; if length(trim(edit2.text))<6 then begin showmessage('密码不能少于6位'); edit2.SetFocus; exit; end; if edit2.text<>edit3.text then begin showmessage('两次输入的密码不一致'); edit2.SetFocus; exit; end; if (isnumber(edit2.text)=true) or (ischar(edit2.text)=true) then begin showmessage('不能全是数字或字母'); edit2.setfocus; exit; end;
能帮我解析一下下面的代码吗?谢谢 procedure tform4.EditWndProc(var message : tmessage); begin if (message.Msg=wm_cut) or (message.Msg=wm_copy) or (message.Msg=wm_paste) then exit; oldwndproc(message); end; procedure TForm4.FormCreate(Sender: TObject); begin oldwndproc:=edit2.WindowProc; edit2.WindowProc:=EditWndProc; end;procedure TForm4.FormDestroy(Sender: TObject); begin edit2.WindowProc:=oldwndproc; end;
2、数字字母的判断应该不难,ASCII码比较或枚举比较
function isnumber(s:String):boolean;
var i:integer;
begin
result:=true;
s:=trim(s);
for i:=1 to length(s) do
begin
if not(s[i] in['0'..'9']) then
break;
end;
result:=false;
end;
function ischar(s:string):boolean;
var i:integer;
begin
result:=true;
s:=trim(s);
for i:=1 to length(s) do
begin
if not(s[i] in ['a'..'z','A'..'Z']) then
break;
end;
result:=false;
end;procedure TForm4.Button1Click(Sender: TObject);
var sqlstr:string;
begin
if edit1.text='' then
begin
showmessage('密码错误');
edit1.SetFocus;
exit;
end;
if (edit2.text='') or (edit3.text='') then
begin
showmessage('密码不能为空');
edit2.SetFocus;
exit;
end;
if length(trim(edit2.text))<6 then
begin
showmessage('密码不能少于6位');
edit2.SetFocus;
exit;
end;
if edit2.text<>edit3.text then
begin
showmessage('两次输入的密码不一致');
edit2.SetFocus;
exit;
end;
if (isnumber(edit2.text)=true) or (ischar(edit2.text)=true) then
begin
showmessage('不能全是数字或字母');
edit2.setfocus;
exit;
end;
procedure tform4.EditWndProc(var message : tmessage);
begin
if (message.Msg=wm_cut) or (message.Msg=wm_copy) or (message.Msg=wm_paste) then
exit;
oldwndproc(message);
end;
procedure TForm4.FormCreate(Sender: TObject);
begin
oldwndproc:=edit2.WindowProc;
edit2.WindowProc:=EditWndProc;
end;procedure TForm4.FormDestroy(Sender: TObject);
begin
edit2.WindowProc:=oldwndproc;
end;
采用的是窗口函数替换的方法实现的
添加一个Popmenu,Edit的弹出菜单指定为这个Popmenu,在Popmenu的OnPop事件中写上Abort;