⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.~pas

📁 身份证校验的小程序
💻 ~PAS
字号:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Label1: TLabel;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

//身份证号码校验
function IDCheck(ID:string):boolean;
const
  k:array[1..17] of integer = (7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); //加权系数
  c:array[0..10] of char = ('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');//校验码
var
  i,d,E,sum:integer;
begin
  Result := Length(ID)=18;
  if not Result then exit;

  //1. 对前17位数字本体码加权求和
  sum := 0;
  for i := 1 to 17 do
  begin
    val(ID[i],d,E);
    sum := sum + d*k[i];
  end;

  //2. 以11对计算结果取模
  i := sum mod 11;

  //3. 根据模的值得到对应的校验码
  Result := ID[18]=c[i];
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if IDCheck(edit1.text) then label1.Caption:='正确'
  else label1.Caption:='错误'
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  i:integer;
begin
  if not IDCheck(edit1.text) then
  begin
    i:=MessageBox(Handle,'身份证号码有误!'#10'是否仍继续进行保存?',
    PChar(Application.title),MB_USERICON or MB_YESNO or MB_DEFBUTTON2);
    if i=ID_YES then caption:='ID_YES';
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -