Delphi5实现身份证检验(DLL版)
效果图

身份证行政区划分代码

识别归属地需要行政区划分,都在data.txt文档里面了。

最后一位校验码
根据上面的原理编写程序即可。
{这个函数计算最后一位检验码是否正确,ID是18位身份证号字符串,结果返回字符串}
function IDcheck(ID:string):string;
const//权重W:array[1..17] of Integer = (7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);//最后一位校验码A:array[0..10] of Char = ('1','0','x','9','8','7','6','5','4','3','2');
varnewID:string;j,i,S:Integer;
beginnewID:=ID;S:=0;for i:=1 to 17 dobegin//求加权因子的乘积。j:=strtoint(newID[i])*W[i];//求和S:=S+j;end;//求模S:=S mod 11;//查表Result:=A[S];
end;
识别出生日期
传入的身份证号就有出生日期,直接截取相应字符串就好。有趣的是,使用到了参数传递,直接修改变量的值。
{年月日这三个是通过 var 关键字传递的变量,
意味着它们在函数内部被修改后,其变化会反映到调用函数时的变量上。}
function IDcard(IDNo:string;var year,month,day:Integer):Boolean;stdcall;
beginif Length(IDNo)<>18 thenbeginyear:=-1;Result:=False;end//判断最后一位检验码是否正确else if IDcheck(IDNo)=Copy(IDNo,18,1) thenbegin//将年月日截取出来year:=StrToInt(Copy(IDNo,7,4));month:=StrToInt(Copy(IDNo,11,2));day:=StrToInt(Copy(IDNo,13,2));Result:=True;endelseResult:=False;
end;
识别性别
原理同上表,偶数为女生,奇数为男生。
{检查性别}
function sexcheck(IDNo:string):string;stdcall;
varstr:string;
beginstr:=Copy(IDNo,17,1);if StrToInt(str) mod 2 =1 thenResult:='男'elseResult:='女';
end;
识别归属地
需要查data.txt,这个文件已经上传到CSDN了,上面有链接,可以自取。
{判断归属地}
function Addcheck(IDNo:string):string;stdcall;
varF1:TextFile;str_temp,str1,str2,str3,str4:string;begin//AssignFile 函数是用于将文件变量与磁盘上的文件关联起来的。//这是进行文件操作(如读写文件)的第一步。AssignFile(F1,'data.txt');Reset(F1); // 尝试以读取模式打开文件tryReadln(F1,str1); //将F1的内容第一行读到str1while not Eof(F1) do // 检查文件是否成功打开beginstr_temp:=str1;str1:=Copy(str1,1,6); //截取前六位行政区号//截取前两位判断省份if str1=Copy(IDNo,1,2)+'0000' thenbeginstr2:=Trim(Copy(str_temp,7,40));end;//判断市if str1=Copy(IDNo,1,4)+'00' thenbeginstr3:=Trim(Copy(str_temp,7,40));end;//判断县if str1=Copy(IDNo,1,6) thenbeginstr4:=Trim(Copy(str_temp,7,40));result:=str2+str3+str4;Exit;end;Readln(F1,str1);end; Result:='输入不合法,请重新输入!';finallyCloseFile(F1);end;
end;
完整DLL文件
library Project1;
{这是动态链接库了}{ Important note about DLL memory management: ShareMem must be thefirst unit in your library's USES clause AND your project's (selectProject-View Source) USES clause if your DLL exports any procedures orfunctions that pass strings as parameters or function results. Thisapplies to all strings passed to and from your DLL--even those thatare nested in records and classes. ShareMem is the interface unit tothe BORLNDMM.DLL shared memory manager, which must be deployed alongwith your DLL. To avoid using BORLNDMM.DLL, pass string informationusing PChar or ShortString parameters. }usesSysUtils,Classes,Windows,Controls,Messages,Dialogs;{$R *.RES}{第一步:编写DLL文件的函数,加上stdcall,表明函数被外部调用}{这个函数计算最后一位检验码是否正确,ID是18位身份证号字符串,结果返回字符串}
function IDcheck(ID:string):string;
const//权重W:array[1..17] of Integer = (7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);//最后一位校验码A:array[0..10] of Char = ('1','0','x','9','8','7','6','5','4','3','2');
varnewID:string;j,i,S:Integer;
beginnewID:=ID;S:=0;for i:=1 to 17 dobegin//求加权因子的乘积。j:=strtoint(newID[i])*W[i];//求和S:=S+j;end;//求模S:=S mod 11;//查表Result:=A[S];
end;{年月日这三个是通过 var 关键字传递的变量,
意味着它们在函数内部被修改后,其变化会反映到调用函数时的变量上。}
function IDcard(IDNo:string;var year,month,day:Integer):Boolean;stdcall;
beginif Length(IDNo)<>18 thenbeginyear:=-1;Result:=False;end//判断最后一位检验码是否正确else if IDcheck(IDNo)=Copy(IDNo,18,1) thenbegin//将年月日截取出来year:=StrToInt(Copy(IDNo,7,4));month:=StrToInt(Copy(IDNo,11,2));day:=StrToInt(Copy(IDNo,13,2));Result:=True;endelseResult:=False;
end;{检查性别}
function sexcheck(IDNo:string):string;stdcall;
varstr:string;
beginstr:=Copy(IDNo,17,1);if StrToInt(str) mod 2 =1 thenResult:='男'elseResult:='女';
end;{判断归属地}
function Addcheck(IDNo:string):string;stdcall;
varF1:TextFile;str_temp,str1,str2,str3,str4:string;begin//AssignFile 函数是用于将文件变量与磁盘上的文件关联起来的。//这是进行文件操作(如读写文件)的第一步。AssignFile(F1,'data.txt');Reset(F1); // 尝试以读取模式打开文件tryReadln(F1,str1); //将F1的内容第一行读到str1while not Eof(F1) do // 检查文件是否成功打开beginstr_temp:=str1;str1:=Copy(str1,1,6); //截取前六位行政区号//截取前两位判断省份if str1=Copy(IDNo,1,2)+'0000' thenbeginstr2:=Trim(Copy(str_temp,7,40));end;//判断市if str1=Copy(IDNo,1,4)+'00' thenbeginstr3:=Trim(Copy(str_temp,7,40));end;//判断县if str1=Copy(IDNo,1,6) thenbeginstr4:=Trim(Copy(str_temp,7,40));result:=str2+str3+str4;Exit;end;Readln(F1,str1);end;Result:='输入不合法,请重新输入!';finallyCloseFile(F1);end;
end;{第二步:导出函数}
exportsIDcard,sexcheck,Addcheck;begin
end.
完整代码
放在CSDN了,可以自取。

相关文章:
Delphi5实现身份证检验(DLL版)
效果图 身份证行政区划分代码 识别归属地需要行政区划分,都在data.txt文档里面了。 最后一位校验码 根据上面的原理编写程序即可。 {这个函数计算最后一位检验码是否正确,ID是18位身份证号字符串,结果返回字符串} function IDcheck(ID:stri…...
linux下的C++程序
1.安装g编译环境(c)、gcc编译环境(c语言) sudo yum install gcc或者gcc-c //安装gcc/g编译(用管理员权限弄) 验证是否安装成功 gcc或者g --version //如果显示版本号,则表示安装成功 sudo yum remove g…...
selfAttention 中的dk到底是什么
在Self-Attention机制中,为什么需要对 Q K T QK^T QKT 的结果进行缩放,除以 d k \sqrt{d_k} dk 。以下是详细解释: 缩放的原因 除以 d k \sqrt{d_k} dk 的原因有两个: 防止输入过大:如果不缩放…...
安装MongoDB UI客户端工具:mongodb-compass-1.40.2-win32-x64.msi
文章目录 1、安装 mongodb-compass-1.40.2-win32-x64.msi2、安装后配置链接地址: 1、安装 mongodb-compass-1.40.2-win32-x64.msi 2、安装后配置链接地址:...
一行命令搞定内网穿透
一行命令搞定内网穿透 一款开源免费的内网穿透工具:localtunnel ,基于 nodejs 实现,无需修改 DNS 和防火墙设置,方便快捷的将内网服务暴露到外网,为开发人员、测试人员以及需要分享本地项目的人提供实时的公网访问方式…...
C语言——扫雷游戏
扫雷游戏通常是一个由方格组成的区域内进行的,其中随机分布着一定数量的地雷 。玩家的目标是通过点击方格来标记出所有地雷的位置,同时避免自己点到地雷而导致游戏失败。游戏开始时,玩家通常只能看到一部分方格,而其余的方格则需要…...
【LLM】-16-评估LLM-与标准答案的差距
目录 1、评估回答是否正确 1.1、util_zh 1.2、eval_zh 1.3、评估 2、评估生成答案与标准答案的差距 2.1、eval_zh2 2.2、评估 即使没有提供的理想答案,只要能制定一个评估标准,就可以使用一个 LLM 来评估另一个 LLM 的输出。 如果可以提供理想答…...
WeNet 2.0:更高效的端到端语音识别工具包
WeNet 2.0:更高效的端到端语音识别工具包 原文链接:[2203.15455] WeNet 2.0: More Productive End-to-End Speech Recognition Toolkit (arxiv.org) 1.摘要 WeNet是一个开源的端到端语音识别工具包,WeNet 2.0在此基础上进行了四项主要更新,…...
阿里大模型调用 = 》通义千问大语言模型
背景:简单的通过API或者SDK在线调用阿里云大模型(基于百炼平台),基于在线知识库 参考地址:安装阿里云百炼SDK_大模型服务平台百炼(Model Studio)-阿里云帮助中心 (aliyun.com) 1、获取API-KEY 当您通过API/SDK调用大模…...
idea使用free流程,2024idea免费使用
1.先到官网下载,这里选择win系统的,点击下图的.exe https://www.jetbrains.com/idea/download/?sectionwindows 2.下载好后基本上就是一直点击“下一步”到直到安装好,安装好后先打开软件后关闭退出 3.下载配配套资料 链接: https://pan.ba…...
算法_链表专题---持续更新
文章目录 前言两数相加题目要求题目解析代码如下 两两交换链表中的结点题目要求题目解析代码如下 重排链表题目要求题目解析代码如下 合并K个升序链表题目要求题目解析 K个一组翻转链表题目要求题目解析代码如下 前言 本文将记录leetcode链表算法题解,包含题目有&a…...
在Windows MFC\C++编程中,如何使用OnCopyData函数
在C中,OnCopyData 函数通常不是标准C库的一部分,而是与特定的图形用户界面(GUI)框架相关联,如Microsoft Foundation Classes (MFC) 或 Windows API 编程。在MFC应用程序中,OnCopyData 是用于处理来自其他应…...
【Qt】项目代码
main.cpp文件 argc:命令行参数个数。*argv[ ]:每一个命令行参数的内容。main的形参就是命令行参数。QApplication a(argc, argv) 编写一个Qt的图形化界面程序,一定需要QApplication对象。 widget w; 在创建项目的时候,勾选widg…...
MySQL中常用工具
MySQL自带的系统数据库 常用工具 MySQL mysqladmin mysqlbinlog mysqldump mysqlimport/source mysqlimport只能导入文本文件,不能导入sql文件...
关于儿童编程语言
青少年通常会通过Scratch或Python开始学习编程。在这两种语言中,代码的编写(或者在Scratch中是构建)方式类似于英语,这使得初学者更容易学习。Scratch的一个重要卖点是对视觉和运动感知学习者非常友好。这些代码块按颜色编码&…...
[io]进程间通信 -信号函数 —信号处理过程
sighandler_t signal(int signum, sighandler_t handler); 功能: 信号处理函数 参数: signum:要处理的信号 handler:信号处理方式 SIG_IGN:忽略信号 SIG_DFL:执行默认操作 handler:捕捉信 …...
RoboDK的插件
目录 collision-free-planner: opc-ua: collision-free-planner: RoboDK 的无碰撞规划器插件使用概率路线图 (PRM) 自动在机器人工作空间内创建无碰撞路径。 有关无碰撞规划器的更多信息,请访问我们的 文档。 生成参数无碰撞…...
List<HashMap<String, Object>>排序
如果列表中的元素类型是List<HashMap<String, Object>>,排序时需要考虑到value可能是任意类型的对象。在这种情况下,你可以针对具体的类型进行比较,或者使用Comparable接口来确保对象可以被正确比较。 示例代码 假设我们想要根据…...
【大数据】探索大数据基础知识:定义、特征与生态系统
欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏: 工💗重💗hao💗:野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题.…...
营销材料翻译质量对销售渠道的影响
在当今的全球市场中,与不同受众进行有效沟通的能力对于企业的成功至关重要。营销材料的高质量翻译在通过销售渠道塑造客户旅程方面发挥着重要作用,影响着知名度、参与度、转化率和保留率。方法如下: 提高品牌知名度 在销售渠道的顶端&#x…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...
针对药品仓库的效期管理问题,如何利用WMS系统“破局”
案例: 某医药分销企业,主要经营各类药品的批发与零售。由于药品的特殊性,效期管理至关重要,但该企业一直面临效期问题的困扰。在未使用WMS系统之前,其药品入库、存储、出库等环节的效期管理主要依赖人工记录与检查。库…...
