📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,math;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
function verifySfzh(sfzh:string):boolean;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
function TForm1.verifySfzh(sfzh: string): boolean;
var
i:integer;
V:array[0..10] of string;
n:integer;
begin
result := false;
if (length(sfzh)<>15) and (length(sfzh)<>18) then
begin
showmessage('身份证号应为15位或18位');
exit;
end;
//1 0 X 9 8 7 6 5 4 3 2
V[0] := '1';
V[1] := '0';
V[2] := 'X';
for i := 3 to 10 do
V[i] := intToStr(12-i);
if length(sfzh)=15 then
begin
sfzh := '19'+Copy(sfzh,7,2)+'-'+Copy(sfzh,9,2)+'-'+Copy(sfzh,11,2);
try
if StrToDate(sfzh) < date then
result := true;
except
end;
exit;
end;
n := 0;
try
for i := 18 downto 2 do
n := n + (Round(Power(2,i-1)) mod 11) * StrToInt(sfzh[19-i]);
except
exit;
end;
result := V[n mod 11] = sfzh[18];
end;
procedure TForm1.Button1Click(Sender: TObject);
var
ss:boolean;
begin
ss := verifySfzh(edit1.text);
if ss then
edit2.text := '正确'
else edit2.text := '不正确';
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -