function dwdmjym(dwdm:string;var ReChar:Char):Boolean;
const
Wi: array[1..8] of string = ('3','7','9','10','5','8','4','2');
ai: array[0..35] of string = ('0','1','2','3','4','5','6','7','8','9','A',
'B','C','D','E','F','G','H','I','J','K','L',
'M','N','O','P','Q','R','S','T','U','V','W',
'X','Y','Z');
bi: array[0..35] of string = ('0','1','2','3','4','5','6','7','8','9','10',
'11','12','13','14','15','16','17','18','19','20','21',
'22','23','24','25','26','27','28','29','30','31','32',
'33','34','35');
function GetAi(S:Char):string;
var I:integer;
begin
Result :='';
for I:=0 to 35 do
if S=ai[I] then
begin
Result :=bi[I];
Break;
end;
end;
var
J,Sum,ModResult:integer;
S:string;
begin
Result:=True;
Sum:=0;
for J:=1 to Length(dwdm) do
begin
S:=GetAi(dwdm[J]);
if S='' then
begin
Result :=False;
Break;
end;
Sum:=Sum+strtoint(S)*strtoint(Wi[J]);
end;
if not Result then Exit;
ModResult:=Sum mod 11;
if ModResult=1 then ReChar:='X'
else if ModResult=0 then ReChar:='0'
else begin
S :=inttostr(11-ModResult);
ReChar:=S[1];
end;
end;function dwdmjy(dwdm:string):Boolean;
var ReChar:Char;
begin
Result :=dwdmjym(Copy(dwdm,1,8),ReChar);
if Result then
if ReChar<>dwdm[9] then Result :=False;
end;
const
Wi: array[1..8] of string = ('3','7','9','10','5','8','4','2');
ai: array[0..35] of string = ('0','1','2','3','4','5','6','7','8','9','A',
'B','C','D','E','F','G','H','I','J','K','L',
'M','N','O','P','Q','R','S','T','U','V','W',
'X','Y','Z');
bi: array[0..35] of string = ('0','1','2','3','4','5','6','7','8','9','10',
'11','12','13','14','15','16','17','18','19','20','21',
'22','23','24','25','26','27','28','29','30','31','32',
'33','34','35');
function GetAi(S:Char):string;
var I:integer;
begin
Result :='';
for I:=0 to 35 do
if S=ai[I] then
begin
Result :=bi[I];
Break;
end;
end;
var
J,Sum,ModResult:integer;
S:string;
begin
Result:=True;
Sum:=0;
for J:=1 to Length(dwdm) do
begin
S:=GetAi(dwdm[J]);
if S='' then
begin
Result :=False;
Break;
end;
Sum:=Sum+strtoint(S)*strtoint(Wi[J]);
end;
if not Result then Exit;
ModResult:=Sum mod 11;
if ModResult=1 then ReChar:='X'
else if ModResult=0 then ReChar:='0'
else begin
S :=inttostr(11-ModResult);
ReChar:=S[1];
end;
end;function dwdmjy(dwdm:string):Boolean;
var ReChar:Char;
begin
Result :=dwdmjym(Copy(dwdm,1,8),ReChar);
if Result then
if ReChar<>dwdm[9] then Result :=False;
end;
解决方案 »
- 排序后颜色显示问题
- 请问如何在系统关闭菜单按钮事件中执行代码?
- 各位大吓:在DELPHI中如何实现多态啊,在线等待!
- 急!用Query进行汇总,如何返回汇总的值???
- 有关局域网文件传输的问题!
- 哪儿有INSTALLSHIELD7。0的编程资料
- 请教,如何如何收起和展开BusinessSkinForm中的bsRibbon?
- 20070808 DELPHI 菜鸟的问题
- 哪里有比较好的奥斯卡经典电影可以下载???
- Delphi6中少了一个Dsgnintf.pas文件,导致很多控件都无法使用,用Delphi5的这个文件也不行,该怎么办?
- 看看这个图片转换函数,为什么bmp转jpg时正常,jpg转jpg时,转成的图片Delphi自己不认识.
- 请教一个指针函数的问题?
final String ai[] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A",
"B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L",
"M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W",
"X", "Y", "Z"};
final String bi[] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
"11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21",
"22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32",
"33", "34", "35"};
String GetAi(char S)
{
int i;
for(i=0;i<=35;i++)
{
if(S==ai[i].charAt(0))
{
break;
}
}
return bi[i];
}
Boolean dwdmjym(String dwdm, char ReChar)
{
int j,Sum,ModResult;
String S;
Boolean vbool;
Sum = 0;
vbool = Boolean.TRUE;
for(j=1;j<=dwdm.length();j++)
{
S = GetAi(dwdm.charAt(0));
if(S=="")
{
vbool = Boolean.FALSE;
break;
}
Sum = Sum + Integer.parseInt(S)*Integer.parseInt(Wi[j]);
}
if(vbool==Boolean.FALSE) return vbool;
ModResult = Sum%11;
if(ModResult==1)
{
ReChar = 'X';
}else if(ModResult==0)
{
ReChar = ' ';
}else
{
ModResult = 11-ModResult;
S = Integer.toString(ModResult);
ReChar = S.charAt(1);
}
return vbool;
}
Boolean dwdmjy(String dwdm)
{
char ReChar;
Boolean vbool;
ReChar = 'B';
vbool = dwdmjym(dwdm.substring(0,8),ReChar);
if (vbool==Boolean.TRUE)
{
if (ReChar!=dwdm.charAt(8))
{
vbool = Boolean.FALSE;
}
}
return vbool;
}