با delphi این شکلیه
.net کردنش با خودتون
var L,C,D,S,I : Integer;
flag : Boolean;
begin
flag := (Code = '00000000000') or (code = '11111111111') or (code = '22222222222') or (code = '33333333333');
flag := (Code = '44444444444') or (code = '55555555555') or (code = '66666666666') or (code = '77777777777') or flag;
flag := (Code = '88888888888') or (code = '99999999999') or flag;
if not flag then
begin
if Code = '' then
ShMeli:= False
else
if Length(Code) < 11 then
ShMeli := False
else
begin
C:= StrToInt(Code[11]); // شناسايي رقم كنترل
L:=Length(Code); // محاسبه طول كد
D:= StrToInt(Code[10])+2; /// محاسبه دهگان +2
S := 0; //1- براي محاسبه رقم کنترل از روي ساير ارقام ، هر رقم را با رقم
// دهگان کد +2 کرده و سپس در ضريب آن ضرب مي کنيم و حاصل را با هم جمع مي کنيم.
S := s + ((d+StrToInt(Code[1]))*29);
S := s + ((d+StrToInt(Code[2]))*27);
S := s + ((d+StrToInt(Code[3]))*23);
S := s + ((d+StrToInt(Code[4]))*19);
S := s + ((d+StrToInt(Code[5]))*17);
S := s + ((d+StrToInt(Code[6]))*29);
S := s + ((d+StrToInt(Code[7]))*27);
S := s + ((d+StrToInt(Code[8]))*23);
S := s + ((d+StrToInt(Code[9]))*19);
S := s + ((d+StrToInt(Code[10]))*17);
S := s mod 11; //2- مجموع بدست آمده از مرحله يک را بر 11 تقسيم مي کنيم
if s = 10 then //3- اگر باقيمانده برابر 10 باشد ، باقيمانده را برابر 0 قرار مي دهيم
s := 0
else
if s = c then //4-اگر رقم کنترل برابر باقيمانده باشد شناسه ملي صحيح فرض مي شود
ShMeli := True;
end;
end
else ShMeli := False; //در غير اين صورت شناسه ملي مورد نظر صحيح نمي باشد