在密码输入的edit里限制汉字作为密码,用了一下事件:procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
  strtmp : String;
  i : Integer;
begin
  strtmp := edit1.Text;
  for i :=0 to length(strtmp) do
  if ByteType(strtmp,i)<>mbSingleByte then
  begin
    showmessage('密码中请不要包含汉字!');
    edit1.Text :='';
    edit1.SetFocus;
    break;
  end;
  if length(strtmp)>10 then
  begin
    showmessage('密码长度不要超过10位!');
    edit1.Text :='';
    edit1.SetFocus;
  end;end;因为时间完毕,要清空eidi1里面的内容,所有有了edit1.Text :='';
问题是这个动作触发了了限制输入汉字的功能,使得这个限制功能老是错误的报错,“密码中请不要包含汉字!”请问如何解决呢?

解决方案 »

  1.   

    不是初始值的问题,问题可能是edit1.Text :=''动作触发了了限制输入汉字的功能。procedure TForm1.Edit1Change(Sender: TObject);
    var
    strtmp : String;
    i : Integer;
    begin
    strtmp := edit1.Text;
    for i :=0 to length(strtmp) do
    if ByteType(strtmp,i)<>mbSingleByte then
    begin
    showmessage('密码中请不要包含汉字!');
    edit1.Text :='';
    edit1.SetFocus;
    break;
    end;
    if length(strtmp)>10 then
    begin
    showmessage('密码长度不要超过10位!');
    edit1.Text :='';
    edit1.SetFocus;
    end;end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      self.Edit1.Text := '';
    end;
    这样每次Button1Click(Sender: TObject);事件后就错误的抛出错误“密码中请不要包含汉字!”。
      

  2.   


    var
    strtmp : String;
    i : Integer;
    begin
    strtmp := edit1.Text;
    for i :=0 to length(strtmp) do
    if ByteType(strtmp,i)<>mbSingleByte then
    begin
    showmessage('密码中请不要包含汉字!');
    edit1.Text :='';
    edit1.SetFocus;
    break;
    end;掉到
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      self.Edit1.Text := '';
    end;ok?
      

  3.   

    for i :=1 to length(strtmp) do
      

  4.   

    procedure TForm1.Edit1Change(Sender: TObject);
    var
    strtmp : String;
    i : Integer;
    begin
    if trim(edit1.text)='' then exit;
    strtmp := trim(edit1.Text);
    for i :=0 to length(strtmp)-1 do
    if ByteType(strtmp,i)<>mbSingleByte then
    begin
    showmessage('密码中请不要包含汉字!');
    edit1.Text :='';
    edit1.SetFocus;
    break;
    end;
    if length(strtmp)>10 then
    begin
    showmessage('密码长度不要超过10位!');
    edit1.Text :='';
    edit1.SetFocus;
    end;end;