Tc Kimlik No Doğrulama

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
Kullanıcı avatarı
mkaderoglu
Üye
Mesajlar: 48
Kayıt: 04 Tem 2007 11:14
Konum: Konya
İletişim:

Tc Kimlik No Doğrulama

Mesaj gönderen mkaderoglu »

s.a. Arkadaşlar Tc Kimlik no doğrulama ile alakalı küçük bir araştırma yaptım. Umarım vereceğim kod daha önce verilmemiştir. Verildiyse de özür dilerim. Kodun oluşmasında ki kaynak http://tr.wikipedia.org/wiki/T%C3%BCrki ... aras%C4%B1 adresidir. Ben burdaki mantığa göre bi fonksiyon yazdım. Hatalı bir işlem yaptıysam belirtin düzeltiyim.

Kod: Tümünü seç

function KodDogrula(TcKimlik:String):Boolean;
var I:Integer;
    A: Array[0..10] of Byte;
    Kod:Integer;
begin
  if Length(TcKimlik)=11
  	then
    	begin
  			for I := 0 to 10 do A[I]:=StrToInt(MidStr(TcKimlik,I+1,1));
        Kod:=0;
        for I := 0 to 9 do Kod:=Kod+A[I];
        Result:=((RightStr(inttostr(Kod),1)=inttostr(A[10])) AND (Strtoint((RightStr(inttostr((((A[0]+A[2]+A[4]+A[6]+A[8])*7)+((A[1]+A[3]+A[5]+A[7])*9))),1)))=A[9]) AND (Strtoint((RightStr(inttostr((((A[0]+A[2]+A[4]+A[6]+A[8])*8))),1)))=A[10]));
      end
    else
    	begin
        ShowMessage('Eksik veya fazla rakamdan oluşuyor. Lütfen tekrar giriniz.');
        Result:=False;
      end;
end;
Hayat öldüğünde diplomanı alacağın bir okuldur. Önemli olan doğru hocaları bulmak.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Tc Kimlik No Doğrulama

Mesaj gönderen sabanakman »

Ben de uğraşmıştım bir ara ama kodumu kaybetmişim, paylaşamıyorum :mrgreen: . Bu arada vatandaşlık numarası asla tek sayı olamıyor :) .
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
baypipox
Üye
Mesajlar: 122
Kayıt: 16 Eki 2006 04:23
İletişim:

Re: Tc Kimlik No Doğrulama

Mesaj gönderen baypipox »

Açıklama: Bir tc kimlik numarası 11 haneden oluşur. soldan ilk 10 hanenenin sayı değerlerinin toplamın mod 10'dan kalanı ile 11 hanenin sayı değeri eşit olmak zorundadır..
örn:
54687651352 ==> 5468765135 ==> 5+4+6+8+7+6+5+1+3+5= 50 ==> 50 mod 10 = 0 ==> son hane=2 ==> 0 = 2 ? değilse Tc No yanlıştır.. Eşitse Doğrudur.

Bende bir projede aşağıdaki kodla doğruluğu test ediyordum..

Kod: Tümünü seç

procedure TForm1.tctest;
var
 i,toplam:integer;
 a:array[1..11] of string;
 b:array[1..11] of integer;
begin
for i:=1 to 11 do
   begin
     a[i]:=copy(ETCKimlik.Text,i,1);
   end;
  for i:=1 to 11 do
    begin
     b[i]:=strtoint(a[i]);
    end;
  toplam:=0;
  for i:=1 to 10 do
    begin
    toplam:=toplam+b[i]
    end;
  if (toplam mod 10)=(b[11]) then
   begin
    test:=1;
    Memo1.Lines.Add(ETCKimlik.Text+'  Doğru...');
   end
   else
   begin
    Memo2.Lines.Add(ETCKimlik.Text+'  Yanlış...');
    test:=0;
   end;
end;
Kullanıcı avatarı
mkaderoglu
Üye
Mesajlar: 48
Kayıt: 04 Tem 2007 11:14
Konum: Konya
İletişim:

Re: Tc Kimlik No Doğrulama

Mesaj gönderen mkaderoglu »

http://tr.wikipedia.org/wiki/T%C3%BCrki ... aras%C4%B1 yukarda mesajımda bu adresi vermiştim sanırım görmediniz. verdiğiniz bilginin çok daha detaylısı orada var. ama genede teşekkür ederiz.
Hayat öldüğünde diplomanı alacağın bir okuldur. Önemli olan doğru hocaları bulmak.
Kullanıcı avatarı
baypipox
Üye
Mesajlar: 122
Kayıt: 16 Eki 2006 04:23
İletişim:

Re: Tc Kimlik No Doğrulama

Mesaj gönderen baypipox »

kusura bakmayın gözümden kaçmış, amacım yardımcı olmakdı.. kolay gelsin. iyi çalışmalar..
Cevapla