DELPHI 中如何让edit1.text只能输入数字和字母

如题,我DELPHI新手,能有一种比较简单的方法吗... 如题,我DELPHI新手,能有一种比较简单的方法吗 展开
 我来答
匿名用户
2013-10-13
展开全部
如果是仅仅对数字进行判断可以进行调用字符串向数字转换的函数如inttostr,通过异常扑捉来判定。 如对整型输入字符串的处理

try
IntoStr("你的输入")
except
Message("输入非法")
end

如果是字母和数字 那么只能通过循环一个一个字符进行ASCII码范围校验了

Delphi提供的字符串操作函数:
  Pos在字符串中查找指定字符串的位置,用于文字的查找
  Delete删除字符串中从指定位置开始指定数量的字符
  Insert在字符串指定文字开始插入字符串
  Copy返回字符串中指定位置的一定长度的字符串
  Length返回指定字符串的长度
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-10-13
展开全部
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
procedure Edit1Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Edit1Enter(Sender: TObject);
procedure Edit1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
qi: integer;
qStr: string;
implementation

{$R *.dfm}

procedure TForm1.Edit1Change(Sender: TObject);
var
str: string;
i: integer;
begin
str := Edit1.Text;
i := Length(Edit1.Text); //第一个字符a的Ascii码
if i-qi <=0 then
begin
Exit;
// Edit1.SelStart := i-1;
end;

if i-qi>1 then
begin
Edit1.Text := qStr;
Edit1.SelStart := i;
Exit;
end;

if i - qi = 1 then begin
if not (ord(Str[i]) in [48..57,65..90,97..122]) then
begin
Edit1.Text := qStr;
Edit1.SelStart := i + 1;
Exit;
end
else begin
qi := Length(Edit1.Text);
qStr := Edit1.Text;
end;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
qi := Length(Edit1.Text);
qStr := Edit1.Text;
end;

procedure TForm1.Edit1Enter(Sender: TObject);
begin
Edit1.SelLength := 0;
end;

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Edit1.SelLength <> 0 then
Edit1.SelLength := 0;
end;

end.
还有可以用MaskEdit控件,比较简单,我就不写了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-10-13
展开全部
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0'..'9', 'A'..'Z', 'a'..'z', #8, #46]) then
Key := #0;
end;
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
none_six
推荐于2016-06-29 · TA获得超过325个赞
知道小有建树答主
回答量:479
采纳率:100%
帮助的人:367万
展开全部
你可以通过Edit1控件的KeyPress事件来进行控制。
KeyPress中有个参数Key,当键盘输入时。你可以对Key进行判断,
下面是一个只接收0-9,小数点和退格、回车、ESC的例子:
If not (Key in ['0'..'9','.',#27,#13,#8]) then
Key:=#0
Else
Key:=SendKey;
end;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
719366461
2017-07-12 · TA获得超过3.6万个赞
知道大有可为答主
回答量:3.6万
采纳率:22%
帮助的人:2176万
展开全部
你可以先将你抓到的包保存到文件 主要代码: /* 回调函数,用来处理数据包 */ void packet_handler(u_char *dumpfile, const struct pcap_pkthdr *header, const u_char *pkt_data) { /* 保存数据包到堆文件 */ pcap_dump(dumpfile, header,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式