İnternet üzerinde biraz arama yaptıktan sonra pascal ile yazılmış aşağıdaki TCNo doğrulama kodunu buldum ve programıma entegre ettim. Program bugüne kadar 500'den fazla *farklı* TCNo doğrulaması yaptı. Ancak bugün bir tane TCNo'yu hatalı olarak gösteriyor.
https://tckimlik.nvi.gov.tr/TCKimlikNo/Dogrulama.aspx sitesinden kişinin bilgilerini girdiğimde site TCNo'yu doğru olarak gösteriyor bana. Acaba bizim TCNo doğrulama yönetmimiz değişmiş olabilir mi? Yoksa bu TCNo bir şekilde yurtdışı uyruklu vatandaşlara verilen türde bir TCNo olabilir mi? Gerçi doğum yeri yurtiçi gözüküyor.
Sorun nedir anlayamadım. Konu ile ilgili yardımcı olabilecek arkadaşlara şimdiden teşekkür ederim.
Doğrulama kodu:
Kod: Tümünü seç
function TCNoDogrula(TCNo:string): Boolean;
var
bir,iki,uc,dort,bes,alti,yedi,sekiz,dokuz,
ilk,son,onuncu,onbirinci : integer;
_Soniki, pSoniki : string;
begin
Result := False;
if (Length(TCNo) < 11) or (Length(TCNo) > 11 ) then begin
Exit;
end;
bir := StrToInt(TCNo[1]);
iki := StrToInt(TCNo[2]);
uc := StrToInt(TCNo[3]);
dort:= StrToInt(TCNo[4]);
bes := StrToInt(TCNo[5]);
alti:= StrToInt(TCNo[6]);
yedi:= StrToInt(TCNo[7]);
sekiz:= StrToInt(TCNo[8]);
dokuz:= StrToInt(TCNo[9]);
ilk := (bir+uc+bes+yedi+dokuz) * 7;
son := iki+dort+alti+sekiz;
onuncu := (ilk - son) mod 10;
onbirinci := (bir+uc+bes+yedi+dokuz+iki+dort+alti+sekiz+onuncu);
onbirinci := onbirinci mod 10;
_Soniki := IntToStr(onuncu) + IntToStr(onbirinci);
pSoniki := TCNo[10] + TCNo[11];
if _Soniki = pSoniki then Result := True;
end;