我的本意是在edit1中输入的字符长度超过8时,弹出一个对话框,但是,当我把
length(trim(edit1.Text))设为大于8时,只有输入十个字符时才弹出对话框。而不是八个。并且我用edit2求出的长度也为十。什么原因啊。当我把length(trim(edit1.Text))设为大于6时,却是在输入第八个字符时弹出对话框。
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
 if length(trim(edit1.Text))>6 then
     begin
       showmessage('sdfsf');
     end;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
 edit2.Text :=inttostr(length(trim(edit1.Text )));
end;
什么原因啊????

解决方案 »

  1.   

    if length(trim(edit1.Text))>=6 then
      

  2.   

    onkeypress时,Edit1 的 text 还没有改变。在 Edit 的  OnChange 中做:
    procedure TForm1.Edit1Change(Sender: TObject);
    begin
     if length(trim(edit1.Text))>6 then
         begin
           showmessage('sdfsf');
         end;
    end;
      

  3.   

    好象是这个问题,trim以后应该是可以的!
    你该成大于等于看看结果怎么样!
      

  4.   

    同意 hiflower(花) Edit1KeyPress判断原来的edit,所以你输八个时才会大于六。>=6 的话就只要输7个了。know?
      

  5.   

    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
     if length(trim(edit1.Text))>6 then
         begin
           showmessage(inttostr(length(edit1.text)))//看看长度就知道了。还是应该在onchange事件里面写
         end;
    end;