如何在delphi中让编辑框只能输入八位数据 (50分)

  • 主题发起人 主题发起人 kingsea
  • 开始时间 开始时间
K

kingsea

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟近来因为在毕业设计中要求作一个应用程序对ISA总线进行操作。因为要从编辑
框中输入一个8位数据(此数据只能是0到255这些整数)才能对其操作或是将从ISA总线中
得到的一个8位数据在编辑框中显示出来,可是不知如何才能将byte类型和字符串类型进
行互换
还有怎样才能对编辑框的输入进行限定,使其只能输入一个8位数据(此数据只能是0到
255这些整数)。
请教各位大虾,很急。忘各位大虾不吝赐教,多谢
 
Edit1.MaxLength:=8;
 
formatfloat('00000000',f);
use maskedit
string->byte
aa:array[0..255] of byte;
s:string;
move(s,aa,length(s))
 
String:=IntToStr(Int);
Int:=StrToInt(String);
 
edit1.maxlength:=8
 
在edit的onkeydown中写入if length(trim(edit.text)) >= 8 then edit.text := copy(trim(edit.text), 1, 8);
 
将byte类型和字符串类型进行互换:
s:string;
b:byte;
b:=StrToInt(s);
s;=Char(b);
////////////////////////
Edit1.maxlength:=100;


 
设置edit1.maxlength:=8
并且在它的onKeyPress事件中加下面代码
if not (key in ['0'..'9',#8,#13,#46])
then key:=#0
 
设edit1为接收用户输入的编辑框
并在它的onKeyPress事件中加下面代码
if (not(key in['0','1','2','3','4','5','6','7','8','9',#8,#46]))then
key:=#0;
if (length(Edt.Text)>4)and(not(key in[#8]))then
key:=#0;

最长为4位数
 
限定用户只能输入0和1,
在它的onKeyPress事件中加下面代码
if not (key in ['0','1',#8,#13,#46])
then key:=#0
再把它转为byte类型!
var
aa:array[0..7] of byte;
str:String;
i:integer;
begin
Str:=edit1.Text;
move(Str,aa,length(str));
 
你说的8位是指8bit而不是8字节吧?
8bit就只能表示0-255之间的数,也就是0-0XFF,对吧?
有两种办法
1、使用spinedit,设置min为0,max为255
2、发送前,先检测并把edit中的text对256取余数,如:
var a:byte;
try
a:=strtoint(edit1.text) mod 256;
except
showmessage('输入的数据有误!请重新输入');
edit1.text:='';
end;

还有什么问题,可到QQ:584740,不过明天得出差。
 
多人接受答案了。
 
后退
顶部