作者:闫磊 E_Mail:YanLiGis@21cn.com
根据〖中华人民共和国国家标准 GB 11643-1999〗中有关公民身份号码的规定,
公民身份号码是特征组合码18位:由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。
地址码表示编码对象常住户口所在县(市、旗、区)的行政区划代码。生日期码表示编码对象出生的年、月、日,其中年份用四位数字表示,年、月、日之间不用分隔符。顺序码表示同一地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号。顺序码的奇数分给男性,偶数分给女性。
15位:六位数字地址码,六位数字出生日期码,三位数字顺序码和一位数字校验码。
var
codeInfoTst: Tstrings; //总
codeTst: Tstrings; //代码
InfoTst: Tstrings; //地址信息
function identityInfo(identitycode: string): string;
//由年月日判断是否为有效日期
function IsDate(Year, Month, Day: string): Boolean;
var
st: string;
begin
st := Year + ''-'' + Month + ''-'' + day;
try
StrToDate(st);
Result := True;
except
Result := False;
end;
end;
function getdetailedFromCode(code: string): string; //由身份证的前六位获得省份县市信息
var
Index: integer;
St: string;
begin
index := codeTst.IndexOf(code);
if index = -1 then
begin
Result := '''';
exit;
end;
st := infoTst[index]; //县
code := copy(code, 1, 4) + ''00'';
index := codeTst.IndexOf(code);
if index = -1 then
begin
Result := st;
exit;
end;
st := infoTst[index] + st; //市
code := copy