📄 ams.~pas
字号:
unit AMS;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Edit1: TEdit;
Label7: TLabel;
Label8: TLabel;
Edit2: TEdit;
Edit3: TEdit;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
reallength:integer;
datah, datal,odddata,ewendata: Byte;
i,j:integer;
s1,s2:string;
datafalse:boolean;
strleng: integer;
inputbustr: string;
redataleng:integer;
datainput:array[0..250] of Byte;
begin
inputbustr:= edit1.Text;
strleng:=length(inputbustr);
datafalse:= true;
for i:=1 to strleng do
begin //这里判断是否全是合法字符
if ((inputbustr[i]='0')or(inputbustr[i]='1')or(inputbustr[i]='2')or(inputbustr[i]='3')
or(inputbustr[i]='4')or(inputbustr[i]='5')or(inputbustr[i]='6')or(inputbustr[i]='7')
or(inputbustr[i]='8')or(inputbustr[i]='9')or (inputbustr[i]='A')or(inputbustr[i]='B')
or(inputbustr[i]='C')or(inputbustr[i]='D') or(inputbustr[i]='E')or(inputbustr[i]='F')
or(inputbustr[i]=' ')) then
begin
datafalse:= true;
end
else
begin
datafalse:= false;
break;
end;
end;
if datafalse then
begin
if((strleng mod 3)=2) then strleng:=strleng +1;
i:=0;
reallength:= strleng div 3 ;
for j:=1 to reallength do
begin
if(inputbustr[i*3+1]='0') then datah:= 0
else if(inputbustr[i*3+1]='1')then datah:=1
else if(inputbustr[i*3+1]='2')then datah:=2
else if(inputbustr[i*3+1]='3')then datah:=3
else if(inputbustr[i*3+1]='4')then datah:=4
else if(inputbustr[i*3+1]='5')then datah:=5
else if(inputbustr[i*3+1]='6')then datah:=6
else if(inputbustr[i*3+1]='7')then datah:=7
else if(inputbustr[i*3+1]='8')then datah:=8
else if(inputbustr[i*3+1]='9')then datah:=9
else if(inputbustr[i*3+1]='A')then datah:=10
else if(inputbustr[i*3+1]='B')then datah:=11
else if(inputbustr[i*3+1]='C')then datah:=12
else if(inputbustr[i*3+1]='D')then datah:=13
else if(inputbustr[i*3+1]='E')then datah:=14
else if(inputbustr[i*3+1]='F')then datah:=15
else datah:=0;
if(inputbustr[i*3+2]='0')then datal:=0
else if(inputbustr[i*3+2]='1')then datal:=1
else if(inputbustr[i*3+2]='2')then datal:=2
else if(inputbustr[i*3+2]='3')then datal:=3
else if(inputbustr[i*3+2]='4')then datal:=4
else if(inputbustr[i*3+2]='5')then datal:=5
else if(inputbustr[i*3+2]='6')then datal:=6
else if(inputbustr[i*3+2]='7')then datal:=7
else if(inputbustr[i*3+2]='8')then datal:=8
else if(inputbustr[i*3+2]='9')then datal:=9
else if(inputbustr[i*3+2]='A')then datal:=10
else if(inputbustr[i*3+2]='B')then datal:=11
else if(inputbustr[i*3+2]='C')then datal:=12
else if(inputbustr[i*3+2]='D')then datal:=13
else if(inputbustr[i*3+2]='E')then datal:=14
else if(inputbustr[i*3+2]='F')then datal:=15
else datal:=0;
datainput[i]:= datah * 16 + datal ;
inc(i);
end;
odddata:=datainput[0];
for j:=1 to reallength-1 do
begin
odddata:= odddata xor datainput[j];
end;
ewendata := not odddata;
if((odddata div 16) = 15) then s1:='F'
else if((odddata div 16) = 14) then s1:='E'
else if((odddata div 16) = 13) then s1:='D'
else if((odddata div 16) = 12) then s1:='C'
else if((odddata div 16) = 12) then s1:='B'
else if((odddata div 16) = 10) then s1:='A'
else
begin
S1:= inttostr(odddata div 16);
end;
if((odddata mod 16) = 15) then s2:='F'
else if((odddata mod 16) = 14) then s2:='E'
else if((odddata mod 16) = 13) then s2:='D'
else if((odddata mod 16) = 12) then s2:='C'
else if((odddata mod 16) = 12) then s2:='B'
else if((odddata mod 16) = 10) then s2:='A'
else
begin
S2:= inttostr(odddata mod 16);
end;
edit2.text:=s1+s2;
if((ewendata div 16) = 15) then s1:='F'
else if((ewendata div 16) = 14) then s1:='E'
else if((ewendata div 16) = 13) then s1:='D'
else if((ewendata div 16) = 12) then s1:='C'
else if((ewendata div 16) = 12) then s1:='B'
else if((ewendata div 16) = 10) then s1:='A'
else
begin
S1:= inttostr(ewendata div 16);
end;
if((ewendata mod 16) = 15) then s2:='F'
else if((ewendata mod 16) = 14) then s2:='E'
else if((ewendata mod 16) = 13) then s2:='D'
else if((ewendata mod 16) = 12) then s2:='C'
else if((ewendata mod 16) = 12) then s2:='B'
else if((ewendata mod 16) = 10) then s2:='A'
else
begin
S2:= inttostr(ewendata mod 16);
end;
edit3.text:=s1+s2;
end
else
begin
Edit2.Text:='';
edit3.Text:='';
showmessage('有非法字符存在,不能计算');
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Edit1.Text:='';
Edit2.Text:='';
Edit3.Text:='';
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -