unit UnitMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, Menus, Mask, wwdbedit, Wwdbspin, Spin, jpeg,
ExtCtrls;
type
TFormIMEIBuilder = class(TForm)
StatusBar1: TStatusBar;
GroupBox1: TGroupBox;
edtFirstIMEI: TEdit;
Button1: TButton;
Label1: TLabel;
lblIMEI14Len: TLabel;
pgc: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
mmoResult: TMemo;
mmoHelp: TMemo;
pm: TPopupMenu;
Label2: TLabel;
Label3: TLabel;
edtLastIMEI: TEdit;
seQty: TSpinEdit;
SaveToTextFile1: TMenuItem;
dlgSave: TSaveDialog;
CopytoClipboard1: TMenuItem;
Image1: TImage;
Image2: TImage;
procedure Button1Click(Sender: TObject);
procedure seQtyChange(Sender: TObject);
procedure edtFirstIMEIChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
function Gen15(IMEI14:Int64):Integer;
procedure SaveToTextFile1Click(Sender: TObject);
procedure CopytoClipboard1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FormIMEIBuilder: TFormIMEIBuilder;
const
IMEI_Len = 15;
implementation
{$R *.dfm}
procedure TFormIMEIBuilder.Button1Click(Sender: TObject);
var
i , IMEI15 :Integer;
IMEI14 : INT64;
begin
mmoResult.Clear;
mmoResult.Lines.Add('IMEI');
IMEI14 := StrToInt64(edtFirstIMEI.Text);
for i := 1 to seQty.Value do
begin
IMEI15 := Gen15(IMEI14);
mmoResult.Lines.Add(IntToStr(IMEI14)+IntToStr(IMEI15));
IMEI14 := IMEI14 + 1;
StatusBar1.Panels[3].Text := 'Lines = ' + IntToStr(i);
Application.ProcessMessages;
end;
end;
procedure TFormIMEIBuilder.seQtyChange(Sender: TObject);
begin
//
if seQty.Text ='' then seQty.Value := 0;
StatusBar1.Panels[0].Text := IntToStr(seQty.Value);
edtLastIMEI.Text := IntToStr( StrToInt64(edtFirstIMEI.Text)+ seQty.value - 1);
end;
procedure TFormIMEIBuilder.edtFirstIMEIChange(Sender: TObject);
var
Code : Integer;
I: Int64;
begin
if edtFirstIMEI.Text = '' then edtFirstIMEI.Text := '0';
Val(edtFirstIMEI.Text, I, Code);
if Code <> 0 then edtFirstIMEI.Text := IntToStr(i);
lblIMEI14Len.Caption := IntToStr(Length(edtFirstIMEI.Text));
edtLastIMEI.Text := IntToStr( StrToInt64(edtFirstIMEI.Text)+ seQty.value - 1);
end;
procedure TFormIMEIBuilder.FormCreate(Sender: TObject);
begin
pgc.ActivePageIndex := 0;
end;
function TFormIMEIBuilder.Gen15(IMEI14: Int64):Integer;
var
i,iSum,eSum:Integer;
istr,estr,s:string;
begin
SetLength(s,IMEI_Len);
s := IntToStr(IMEI14);
iSum := 0;
eSum := 0;
istr := '';
estr := '';
for i := 1 to IMEI_Len - 1 do
begin
if (i mod 2) = 0 then // 奇数
iSum := iSum + StrToInt(s[i])*2 mod 10 + StrToInt(s[i])*2 div 10
else // 偶数
eSum := eSum + StrToInt(s[i]);
end;
// mmoResult.Lines.Add(istr+chr(9)+IntToStr(iSum));
// mmoResult.Lines.Add(estr+chr(9)+IntToStr(eSum));
Result := Abs(((eSum + iSum) mod 10) -10) mod 10;
end;
procedure TFormIMEIBuilder.SaveToTextFile1Click(Sender: TObject);
begin
if dlgSave.Execute then
mmoResult.Lines.SaveToFile(dlgSave.FileName);
end;
procedure TFormIMEIBuilder.CopytoClipboard1Click(Sender: TObject);
begin
mmoResult.SelectAll;
mmoResult.CopyToClipboard;
end;
end.