genel mantık şu
1. 3. 5. 7. ve 9. rakamların toplamı * 7 den
2. 4. 6. 8. sıradaki rakamların toplamını çıkarıp
sonucun mod 10 ununu alıyoruz bu bize 10. karakteri veriyor
1 den 10. karaktere kadar olanları da toplayıp mod 10 ununu alınca 11. karakteri veriyor..
bizde daha sonra işlem sonrası dönen 2 rakam ile kişinin verdiği bilgilerdeki son 2 rakamı karşılaştırıp doğru yada yanlış diyebiliyoruz..
1. 3. 5. 7. ve 9. rakamların toplamı * 7 den
2. 4. 6. 8. sıradaki rakamların toplamını çıkarıp
sonucun mod 10 ununu alıyoruz bu bize 10. karakteri veriyor
1 den 10. karaktere kadar olanları da toplayıp mod 10 ununu alınca 11. karakteri veriyor..
bizde daha sonra işlem sonrası dönen 2 rakam ile kişinin verdiği bilgilerdeki son 2 rakamı karşılaştırıp doğru yada yanlış diyebiliyoruz..
Function TCKimlikDogrula(TCNo : String) : Boolean;
var
bir,iki,uc,dort,bes,alti,yedi,sekiz,dokuz,onn,onbir,
ilk,son,onuncu,onbirinci : integer;
_Soniki, pSoniki : string;
begin
if (Length(TCNo) < 11) or (Length(TCNo) > 11 ) then
begin
ShowMessage('doğru düzgün gir tc no nu !!');
Abort
end
else
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]);
onn := StrToInt(TCNo[10]);
onbir:= StrToInt(TCNo[11]);
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
begin
Result := True;
end
else
Result := False;
end;
Kullanımı :var
bir,iki,uc,dort,bes,alti,yedi,sekiz,dokuz,onn,onbir,
ilk,son,onuncu,onbirinci : integer;
_Soniki, pSoniki : string;
begin
if (Length(TCNo) < 11) or (Length(TCNo) > 11 ) then
begin
ShowMessage('doğru düzgün gir tc no nu !!');
Abort
end
else
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]);
onn := StrToInt(TCNo[10]);
onbir:= StrToInt(TCNo[11]);
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
begin
Result := True;
end
else
Result := False;
end;
if TCKimlikDogrula(Edit1.Text) = True then
ShowMessage('doğru')
else
ShowMessage('yanlış');
Edit1 e tc kimlik numaranızı girin ve deneyin : )ShowMessage('doğru')
else
ShowMessage('yanlış');