下载下来是个txt文本里面的代码如下:
-------------------------------------------------------
///////////////////////////////////////// qq:654362790 o(∩_∩)o 哈哈 ///////////////////////////////////////// function TForm1.EMS(EMSNo: string;num:integer):TStringList; var fri:string; res:Integer; num3,num4,num5,num6,num7,num8,num9,num0:Integer; mid:Integer; I:integer; EMSres:TStringList; begin EMSres:=TStringList.Create; fri:=Copy(EMSNo,3,8) ; for i:=1 to num do begin num3:=StrToInt(Copy(fri,1,1)); num4:=StrToInt(Copy(fri,2,1)); num5:=StrToInt(Copy(fri,3,1)); num6:=StrToInt(Copy(fri,4,1)); num7:=StrToInt(Copy(fri,5,1)); num8:=StrToInt(Copy(fri,6,1)); num9:=StrToInt(Copy(fri,7,1)); num0:=StrToInt(Copy(fri,8,1)); mid:= 8*num3+6*num4+4*num5+2*num6+3*num7+5*num8+9*num9+7*num0 ; res:=11-(mid)mod(11); if res=10 then res:=0; if res=11 then res:=5; EMSres.Add('EI'+fri+IntToStr(res)+'CN'); fri:=IntToStr(strtoint(fri)+1); end; result:=EMSres; end; function TForm1.ShunFeng(ShunFengNo: string;num:integer):TStringList; var fri,Nfri,Yuandanhao:string; res:Double; num1,num2,num3,num4,num5,num6,num7,num8,num9,num10,num11,num12:Integer; Nnum1,Nnum2,Nnum3,Nnum4,Nnum5,Nnum6,Nnum7,Nnum8,Nnum9,Nnum10,Nnum11,Nnum12:Integer; mid:Integer; I:integer; ShunFengres:TStringList; begin ShunFengres:=TStringList.Create; fri:=Copy(ShunFengNo,1,11) ; ShunFengres.Add(ShunFengNo); Yuandanhao:=ShunFengNo; for i:=1 to num-1 do begin Nfri:=FloatToStr(StrToFloat(fri)+1); num1:=StrToInt(Copy(Yuandanhao,1,1)); num2:=StrToInt(Copy(Yuandanhao,2,1)); num3:=StrToInt(Copy(Yuandanhao,3,1)); num4:=StrToInt(Copy(Yuandanhao,4,1)); num5:=StrToInt(Copy(Yuandanhao,5,1)); num6:=StrToInt(Copy(Yuandanhao,6,1)); num7:=StrToInt(Copy(Yuandanhao,7,1)); num8:=StrToInt(Copy(Yuandanhao,8,1)); num9:=StrToInt(Copy(Yuandanhao,9,1)); num10:=StrToInt(Copy(Yuandanhao,10,1)); num11:=StrToInt(Copy(Yuandanhao,11,1)); num12:=StrToInt(Copy(Yuandanhao,12,1)); //12????óD£??í11??£?ìí?óá???±?á?′?′¢?-ê??± Nnum1:=StrToInt(Copy(Nfri,1,1)); Nnum2:=StrToInt(Copy(Nfri,2,1)); Nnum3:=StrToInt(Copy(Nfri,3,1)); Nnum4:=StrToInt(Copy(Nfri,4,1)); Nnum5:=StrToInt(Copy(Nfri,5,1)); Nnum6:=StrToInt(Copy(Nfri,6,1)); Nnum7:=StrToInt(Copy(Nfri,7,1)); Nnum8:=StrToInt(Copy(Nfri,8,1)); Nnum9:=StrToInt(Copy(Nfri,9,1)); Nnum10:=StrToInt(Copy(Nfri,10,1)); Nnum11:=StrToInt(Copy(Nfri,11,1)); if (Nnum9-num9=1) and ((num9)mod(2)=1) then begin if num12-8 >=0 then Nnum12:=num12-8 // -8 else Nnum12:= num12-8 +10 end else if (Nnum9-num9=1) and ((num9)mod(2)=0) then begin if num12-7 >=0 then Nnum12:=num12-7 // -7 else Nnum12:= num12-7 +10 end else begin if ((num10=3)or(num10=6))and(num11=9) then begin if num12-5 >=0 then Nnum12:=num12-5 // -5 else Nnum12:= num12-5 +10 end else if (num11=9) then begin if num12-4 >=0 then Nnum12:=num12-4 // -4 else Nnum12:= num12-4 +10 end else begin if num12-1 >=0 then Nnum12:=num12-1 // -1 else Nnum12:= num12-1 +10 end; end; ShunFengres.Add(Nfri+IntToStr(Nnum12)); Yuandanhao:=Nfri+IntToStr(Nnum12); fri:=FloatToStr(StrToFloat(fri)+1); end; result:=ShunFengres; end;
------------------
另外两个帖子:http://bbs.paidai.com/topic/76928
过年了,祝大家新年快乐。 一个人在家实在无聊,想起一直没有解决的问题:EMS快递单打印如何实现自动填充?百度了一下,终于解决了,按耐不住心中的高兴,分享给各位派友。 EMS运单排列规则: 1、快递面单的前8位数字是按照顺序排列的 2、最后一位数字看似杂乱无章,但其实是用一个公式计算出来的。 计算规则如下: 1、X=第一位数字*8+第二位数字*6+第三位数字*4+第四位数字*2+第五位数字*3+第六位数字*5+第七位数字*9+第八位数字*7 2、计算X/11得出的余数=Y 3、计算Z=11-Y 当Z=10时,最后一位数字是0 当Z=11时,最后一位数字是5 当Z<10时,最后一位数字是Z 附配套的EXCEL下载文件http://x.paidai.com/view/18411 顺丰运单排列规则: 如果单量不大的话,可以去顺丰官方网站下载套打程序,下载地址http://www.sf-express.com/cn/sc/delivery_step/fill_waybill/waybill_printing.html 我根据这个套打程序自动回填的运单信息对运单规则做了推导,有兴趣的派友可以验证一下,是否有错误的地方。 推导的规则如下: 前11位数字是按照顺序排列,最后一位数字是根据一定原理推导出来的: 1、当第11位数不等于9时,第二张运单的最后一位数字=上一张运单最后一位数字+9,取结果的个位数 2、当第11位数字=9时,看第10位数字的规律 当第10位数字=0,1,2,4,5,7,8时,第二张运单的最后一位数字=上一张运单最后一位数字+6,取结果的个位数 当第10位数字=3,6时,第二张运单的最后一位数字=上一张运单最后一位数字+5,取结果的个位数 3、当第11位数字、第10位数字都等于9时,看第9位数字的规律 当第9位数字=0,2,4,6,8时,第二张运单最后一位数字=上一张运单最后一位数字+3,取结果的个位数 当第9位数字=1,3,5,7时,第二张运单最后一位数字=上一张运单最后一位数字+2,取结果的个位数 4、当第11位数字、第10位数字、第9位数字都等于9时,看第8位数字的规律 当第8位数字=0,3,6时,第二张运单的最后一位数字=上一张运单最后一位数字+0,取结果的个位数 当第8位数字=1,2,4,5,7,8时,第二张运单的最后一位数字=上一张运单最后一位数字+9,取结果的个位数 5、当第11位数字、第10位数字、第9位数字、第8位数字都等于9时,看第7位数字的规律 当第7位数字=0时,第二张运单的最后一位数字=上一张运单最后一位数字+7,取结果的个位数 当第7位数字=1,2,3,4,5,6,7,8时,第二张运单的最后一位数字=上一张运单最后一位数字+6,取结果的个位数 6、当第11位数字、第10位数字、第9位数字、第8位数字、第7位数字都等于9时,看第6位数字的规律 当第6位数字=0,1,2,3,4,5,6,7,8时,第二张运单的最后一位数字=上一张运单最后一位数字+3,取结果的个位数 7、当第11位数字、第10位数字、第9位数字、第8位数字、第7位数字、第6位数字都等于9时,根据第5位数字判断 当第5位数字=0,1,2,4,5,7,8时,第二张运单的最后一位数字=上一张运单最后一位数字+9,取结果的个位数 当第5位数字=3,6时,第二张运单的最后一位数字=上一张运单最后一位数字+8,取结果的个位数 8、当第11位数字、第10位数字、第9位数字、第8位数字、第7位数字、第6位数字、第5位数字都等于9时,根据第4位数字判断 当第4位数字=0,2,4,6,8时,,第二张运单的最后一位数字=上一张运单最后一位数字+5,取结果的个位数 当第4位数字=1,3,5,7时,第二张运单的最后一位数字=上一张运单最后一位数字+4,取结果的个位数 9、推到这里后面顺丰的套打系统就不能使用了,显示 ,后面的数字就不能推导了。 我用上面的规则做了一个EXCEL版的顺丰面单自动填充。地址http://x.paidai.com/view/18419 用这个EXCEL版本验证了一千万张面单,没有发现错误。
--------
最近在跟踪ERP系统的开发,跟大家分享一下 EMS快递单号排列规则 1、快递面单的前8位数字是按照顺序排列的 2、最后一位数字看似杂乱无章,但其实是用一个公式计算出来的。 计算规则如下: 1、X=第一位数字*8+第二位数字*6+第三位数字*4+第四位数字*2+第五位数字*3+第六位数字*5+第七位数字*9+第八位数字*7 2、计算X/11得出的余数=Y 3、计算Z=11-Y 当Z=10时,最后一位数字是0 当Z=11时,最后一位数字是5 当Z<10时,最后一位数字是Z
------------------------------------------------
因为EMS单号的前两位和后两位经常变,所以上面的方法有些欠缺,我自己写的无敌函数
:
//2.(EMS)--EMS function TFastOutSid.CreateEmsOutSid(TopOutSid: string): string; var {----我的博客资料:http://www.cnblogs.com/del88/archive/2012/06/02/2531987.html----} //--EMS单号: EK702111927CS-- Num1ToNum2,Num12ToNum13: string;{前两位和后两位} Num3ToNum10: string;{中间的3-10位} Num11: Integer;{第11位} Num3,Num4,Num5,Num6,Num7,Num8,Num9,Num10: Integer; begin //取出前两位 Num1ToNum2 := Copy(TopOutSid,1,2); //取出后两位 Num12ToNum13 := Copy(TopOutSid,12,2); //取出中间的3-10位加1 Num3ToNum10 := IntToStr(StrToInt(Copy(TopOutSid,3,8))+1); //分别取出加1过的3-10位 num3:=StrToInt(Copy(Num3ToNum10,1,1)); num4:=StrToInt(Copy(Num3ToNum10,2,1)); num5:=StrToInt(Copy(Num3ToNum10,3,1)); num6:=StrToInt(Copy(Num3ToNum10,4,1)); num7:=StrToInt(Copy(Num3ToNum10,5,1)); num8:=StrToInt(Copy(Num3ToNum10,6,1)); num9:=StrToInt(Copy(Num3ToNum10,7,1)); num10:=StrToInt(Copy(Num3ToNum10,8,1)); //计算第11位 Num11 := 11-((8*num3 + 6*num4 + 4*num5 + 2*num6 + 3*num7 + 5*num8 + 9*num9 + 7*num10) mod 11); if Num11 < 10 then begin Exit(Num1ToNum2 + Num3ToNum10 + IntToStr(Num11) + Num12ToNum13); end else if Num11 = 10 then begin Exit(Num1ToNum2 + Num3ToNum10 + IntToStr(0) + Num12ToNum13); end else if Num11 = 11 then begin Exit(Num1ToNum2 + Num3ToNum10 + IntToStr(5) + Num12ToNum13); end; end;
2012.10.17补充==============代码备份,我自己用的顺风和EMS函数
//3.(SF)--顺丰速运 function TFastOutSidApi.CreateSfOutSid(top_out_sid: string): string; var //顺丰单号--755000000134 fri,Nfri,Yuandanhao:string; num1,num2,num3,num4,num5,num6,num7,num8,num9,num10,num11,num12:Integer; Nnum1,Nnum2,Nnum3,Nnum4,Nnum5,Nnum6,Nnum7,Nnum8,Nnum9,Nnum10,Nnum11,Nnum12:Integer; begin fri := Copy(top_out_sid,1,11); Yuandanhao := top_out_sid; Nfri := FloatToStr(StrToFloat(fri)+1); num1 := StrToInt(Copy(Yuandanhao,1,1)); num2 := StrToInt(Copy(Yuandanhao,2,1)); num3 := StrToInt(Copy(Yuandanhao,3,1)); num4 := StrToInt(Copy(Yuandanhao,4,1)); num5 := StrToInt(Copy(Yuandanhao,5,1)); num6 := StrToInt(Copy(Yuandanhao,6,1)); num7 := StrToInt(Copy(Yuandanhao,7,1)); num8 := StrToInt(Copy(Yuandanhao,8,1)); num9 := StrToInt(Copy(Yuandanhao,9,1)); num10 := StrToInt(Copy(Yuandanhao,10,1)); num11 := StrToInt(Copy(Yuandanhao,11,1)); num12 := StrToInt(Copy(Yuandanhao,12,1)); Nnum1 := StrToInt(Copy(Nfri,1,1)); Nnum2 := StrToInt(Copy(Nfri,2,1)); Nnum3 := StrToInt(Copy(Nfri,3,1)); Nnum4 := StrToInt(Copy(Nfri,4,1)); Nnum5 := StrToInt(Copy(Nfri,5,1)); Nnum6 := StrToInt(Copy(Nfri,6,1)); Nnum7 := StrToInt(Copy(Nfri,7,1)); Nnum8 := StrToInt(Copy(Nfri,8,1)); Nnum9 := StrToInt(Copy(Nfri,9,1)); Nnum10 := StrToInt(Copy(Nfri,10,1)); Nnum11 := StrToInt(Copy(Nfri,11,1)); if (Nnum9-num9=1) and ((num9)mod(2)=1) then begin if num12-8 >=0 then begin Nnum12:=num12-8; // -8 end else begin Nnum12:= num12-8 +10; end; end else if (Nnum9-num9=1) and ((num9)mod(2)=0) then begin if num12-7 >=0 then begin Nnum12:=num12-7; // -7 end else begin Nnum12:= num12-7 +10; end; end else begin if ((num10=3) or (num10=6)) and (num11=9) then begin if num12-5 >=0 then begin Nnum12:=num12-5; // -5 end else begin Nnum12:= num12-5 +10; end; end else if (num11=9) then begin if num12-4 >=0 then begin Nnum12:=num12-4; // -4 end else begin Nnum12:= num12-4 +10; end; end else begin if num12-1 >=0 then begin Nnum12:=num12-1; // -1 end else begin Nnum12:= num12-1 +10; end; end; end; //返回数据 Exit(Nfri + IntToStr(Nnum12)); end;
2012.10.17---上方的最终精简后(多余的numX,NnumX去掉了):
//3.(SF)--顺丰速运 function TFastOutSidApi.CreateSfOutSid(top_out_sid: string): string; var //顺丰单号--755000000134 fri,Nfri,Yuandanhao:string; num9,num10,num11,num12:Integer; Nnum9,Nnum12:Integer; begin fri := Copy(top_out_sid,1,11); Yuandanhao := top_out_sid; Nfri := FloatToStr(StrToFloat(fri)+1); num9 := StrToInt(Copy(Yuandanhao,9,1)); num10 := StrToInt(Copy(Yuandanhao,10,1)); num11 := StrToInt(Copy(Yuandanhao,11,1)); num12 := StrToInt(Copy(Yuandanhao,12,1)); Nnum9 := StrToInt(Copy(Nfri,9,1)); if (Nnum9-num9=1) and ((num9)mod(2)=1) then begin if num12-8 >=0 then begin Nnum12:=num12-8; // -8 end else begin Nnum12:= num12-8 +10; end; end else if (Nnum9-num9=1) and ((num9)mod(2)=0) then begin if num12-7 >=0 then begin Nnum12:=num12-7; // -7 end else begin Nnum12:= num12-7 +10; end; end else begin if ((num10=3) or (num10=6)) and (num11=9) then begin if num12-5 >=0 then begin Nnum12:=num12-5; // -5 end else begin Nnum12:= num12-5 +10; end; end else if (num11=9) then begin if num12-4 >=0 then begin Nnum12:=num12-4; // -4 end else begin Nnum12:= num12-4 +10; end; end else begin if num12-1 >=0 then begin Nnum12:=num12-1; // -1 end else begin Nnum12:= num12-1 +10; end; end; end; //返回数据 Exit(Nfri + IntToStr(Nnum12)); end;
本文来自博客园,作者:del88,转载请注明原文链接:https://www.cnblogs.com/del88/archive/2012/06/02/2531987.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人