📄 unit1.~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 + -