📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Unit2, ShellAPI; //调用其他窗体需要加入Unit
type
TForm1 = class(TForm)
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
GroupBox1: TGroupBox;
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
Button3: TButton;
Button4: TButton;
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Edit2Change(Sender: TObject);
procedure Edit3Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure RadioButton1Click(Sender: TObject);
procedure RadioButton2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
i,t,sum,even,even1,even2:integer;
str,old_imei,reverse_imei,cd:string;
imei_start,imei_end:string;
//t表示批量循环缓存
//sum代表IMEI中的D1~D14处理后的和
//even代表2倍的奇数位
//even1代表even的个位,evev2代表even的十位
//old_imei代表处理前的IMEI,reverse_imei代表处理后的IMEI,cd代表Check Digit
//imei_start代表批量开始数据;imei_end表示批量结束数据
fp:textfile;
implementation
{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text := '';
Edit2.Text := '';
Label1.Caption :='Input IMEI';
Label2.Caption :='Output IMEI';
Edit2.Enabled := false;
end;
procedure TForm1.Edit2Change(Sender: TObject);
begin
Button1.Enabled := true;
end;
procedure TForm1.Edit3Change(Sender: TObject);
begin
Button1.Enabled := true;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
sum:=0;
even:=0;
even1:=0;
even2:=0;
str:='';
reverse_imei:='';
cd:='';
if RadioButton1.Checked = true then
begin
if length(Edit1.Text)<14 then //判断输入框输入长度
begin
ShowMessage('Text length too short!');
exit; //退出过程
end;
//**************IMEI单个计算开始*******************
old_imei:= Edit1.Text; //将oldimei1反向,这样从D1到D14处理比较符合大多数人从左到右的习惯
for i:=14 downto 1 do
begin
str:=copy(old_imei,i,1);
reverse_imei:=reverse_imei+str;
end;
//求和
for i:=1 to 14 do
begin
if((i mod 2)=0) then
begin
sum:=sum+strtoint(copy(reverse_imei,i,1));
end
else
begin
even:=2*(strtoint(copy(reverse_imei,i,1)));
even1:=even mod 10;
even2:=even div 10;
sum:=sum+even1+even2;
end
end;
//生成CD位
if ((sum mod 10)=0) then
cd:='0'
else
cd:=inttostr(10-(sum mod 10));
//生成新的15位IMEI,带CD位的
reverse_imei:=old_imei+cd;
Edit2.Text:=reverse_imei;
AssignFile(fp,'imei.txt');
if FileExists('imei.txt') then
begin
Append(fp);
writeln(fp,reverse_imei);
Closefile(fp);
end
else
begin
Rewrite(fp);
writeln(fp,reverse_imei);
Closefile(fp);
end;
end
//**************IMEI单个计算结束*******************
else
begin
//**************IMEI批量计算开始*******************
imei_start:= Edit1.Text;
imei_end:= Edit2.Text;
if length(Edit1.Text)<14 then //判断输入框输入长度
begin
ShowMessage('Text length too short!');
exit;
end //退出过程
else
begin
if length(Edit2.Text)<14 then
begin
ShowMessage('Text length too short!');
exit;
end
else
begin
if strtoint64(imei_start)> strtoint64(imei_end) then
begin
ShowMessage('IMEI_start can not bigger the IMEI_end!');
exit;
end;
end;
end;
//for t:= strtoint64(imei_start) to strtoint64(imei_end) do
while strtoint64(imei_start)<=strtoint64(imei_end) do
begin
//***循环开始 ***
for i:=14 downto 1 do
begin
str:=copy(imei_start,i,1);
reverse_imei:=reverse_imei+str;
end;
//求和
for i:=1 to 14 do
begin
if((i mod 2)=0) then
begin
sum:=sum+strtoint(copy(reverse_imei,i,1));
end
else
begin
even:=2*(strtoint(copy(reverse_imei,i,1)));
even1:=even mod 10;
even2:=even div 10;
sum:=sum+even1+even2;
end;
end;
//生成CD位
if ((sum mod 10)=0) then
cd:='0'
else
cd:=inttostr(10-(sum mod 10));
//生成新的15位IMEI,带CD位的
reverse_imei:=imei_start+cd;
//Edit2.Text:=reverse_imei;
//写文件
AssignFile(fp,'imei.txt');
if FileExists('imei.txt') then
begin
Append(fp);
writeln(fp,reverse_imei);
Closefile(fp);
end
else
begin
Rewrite(fp);
writeln(fp,reverse_imei);
Closefile(fp);
end;
imei_start:= inttostr(strtoint64(imei_start)+1);
end;
ShowMessage('Process finished!');
//读文件
//AssignFile(fp,'imei.txt');
//Reset(fp);
//readln(fp,str);
//showmessage(str);
//Closefile(fp);
//**************IMEI批量计算结束*******************
end;
end;
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
if RadioButton1.Checked = true then
Begin
Label1.Caption :='Input IMEI';
Label2.Caption :='Output IMEI';
Edit2.MaxLength :=15;
end;
end;
procedure TForm1.RadioButton2Click(Sender: TObject);
begin
if RadioButton2.Checked =true then
Begin
Label1.Caption :='IMEI Start';
Label2.Caption :='IMEI End';
Edit2.MaxLength :=14;
Edit2.Enabled := true;
end;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
Form2.Show;
//Form1.Hide;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
ShellExecute(GetActiveWindow,'open','imei.txt',nil,nil,SW_NORMAL);//打开TXT文件,如果是CHM将语句扩展名为*.chm即可。
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -