TCKimlik No Validate (format 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ı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

TCKimlik No Validate (format doğrulama)

Mesaj gönderen mrmarman »

Merhaba.

- Bir çoğunuzun işine yarayacağını değerlendirdiğim TCKimlik numarası format doğrulama fonksiyonunu sunuyorum. :idea:

Kod: Tümünü seç

Function checkTCId(tcId: String):Boolean;
Var
  tmp,       tmp1,
  odd_sum,   even_sum,
  ChkDigit2, ChkDigit1,
  total              : Int64;
  d : Array[01..11] of Int64;
  n : Integer;
begin
  if Length(tcId) <> 11 then Result := False
  else
  begin
    tmp  := Trunc(StrToInt64(tcId) / 100);
    tmp1 := Trunc(StrToInt64(tcId) / 100);
    for n := 1 to 9 do
    begin
      d[n] := tmp1 mod 10;
      tmp1 := Trunc(tmp1 / 10);
    end;
    odd_sum   := d[9]+d[7]+d[5]+d[3]+d[1];
    even_sum  := d[8]+d[6]+d[4]+d[2];
    total     := (odd_sum * 3) + even_sum;
    ChkDigit1 := (10 - (total mod 10)) mod 10;
    odd_sum   := ChkDigit1+d[8]+d[6]+d[4]+d[2];
    even_sum  := d[9]+d[7]+d[5]+d[3]+d[1];
    total     := (odd_sum * 3) + even_sum;
    ChkDigit2 := (10 - (total mod 10)) mod 10;
    tmp       := (tmp*100)+(ChkDigit1*10)+ChkDigit2;
    if NOT (tmp = StrToInt64(tcId))
        then Result := False
        else Result := True;
  end;
end;

- Kullanımı ise şöyle...

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
  if checkTCId('11025626126') // Örnektir yanlış bir numara.. 
    then ShowMessage('Doğru bir numara')
    else ShowMessage('Yanlış numara')
end;
- Böylece internette TCKimlik sorgulamasından önce ön test yapma şansınız oldu.

- Çalışmalarınızda başarılar...
En son mrmarman tarafından 06 Eyl 2007 03:40 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Resim
Resim ....Resim
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

Merhaba;

Muharrem hocam burada benim anlamadığım nokta site ismi veya yolu belirtmeden bu kod nasıl çalışıyor acaba :shock:

Gerçektende çok sağlıklı çalışıyor.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

Tekrar merhaba ;
:)
Benim kafam dağınık biraz. bu webden kontrol yapmıyorki sadece belli bir standartı olan t.c. kimlik nosunu standarda uyup uymadığını kontrol ediyormuş :)

Kolay gelsin.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Bu kod, TCKimlik numarasının kurgusunu soguluyor. Şöyle ki aşağıda göreceğin numaraları da bu kurala uygun ürettim, ama karşılığı yok. Bu numaralarda vatandaş kayıtlı değil...

Kod: Tümünü seç

11000000068
11000000136
11000000204
11000000372
11000000440
11000000518
11000000686
11000000754
11000000822
11000000990
- Anlatabildim mi, bu fonksiyonu neden verdim; artık veritabanlarımızda TCKimlik No. hanesi olmazsa olmazlardan olduğunu göz önüne aldığımızda, veri girişi yapılırken Web'den sorgulama yapılmaksızın TCKimlik ID'sinin, kendi içindeki bütünlüğünün kontrol edilmesi, hızla veri girişi yapılmasına olanak sağlayacaktır.
Resim
Resim ....Resim
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

Merhaba;
Teşekkürler muharrem hocam.
Geçekten çok güzel olmuş elinize yüreğinize sağlık.

Kolay gelsin.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
ALUCARD
Üye
Mesajlar: 1270
Kayıt: 27 Eyl 2003 10:12
Konum: Samsun
İletişim:

Mesaj gönderen ALUCARD »

hocam eline yüreğine sağlık

Allah Razı Olsun..
بِسْمِ اللهِ الرَّحْمنِ الرَّحِيمِ
Forumun 365. Üyesi
Hiç Bir Şey İnsan Kadar Yükselemez ve Alçalamaz

Erkan ÇAĞLAR
Kullanıcı avatarı
kelaynak2
Üye
Mesajlar: 135
Kayıt: 30 Haz 2003 02:18

eline sağlık

Mesaj gönderen kelaynak2 »

Muharrem usta
eline sağlık.En azından veriler girilirken yanlış bir numaraya basıldığında kullanıcıyı uyarabilir.
Selamlar. :lol:
Kullanıcı avatarı
tuanna
Üye
Mesajlar: 582
Kayıt: 06 Ara 2004 05:01
Konum: Ankara
İletişim:

Mesaj gönderen tuanna »

bu fonksiyon için muharrem hocama tekrar tsk ediyorum

lakin sölediğinize göre bu numaraları kendiniz oluşturuyormusunuz

bu mesleyi biraz açarmısınız nasıl yani bu numaralar oluşturulurken

nasıl bir mantık izleniyor...işin açıkcası bunu merak ettim ben

tabi fonksiyonu inceledim bir syeelr yakaladım ama sonucta kod olunca tam olmadı benim kod etüdüm iyi değil sanırım...

sizi bilgilerinizden bu aşamada da bize yardımcı olmasını bekliyorum ...

görüşme dileğiyle iyi çalışmalar...
Siz hayal edin...Biz yapalım TuannaSoft...
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Bugün A-Net News forumdaki bir soruya cevap verirken Excel'de de bu fonksiyonu kullanma konusunda bir çözüm gerekti.

- Oturdum aynı fonksiyonu, Google'da baka çıka VisualBasic'e de dönüştürdüm afiyet olsun... :)

- Kodda etik hatalar varsa kusura bakmayın. İlk defa Visual basic kodu yazıyorum. Basic temelim var herkes kadar ama biraz bocaladım. Visual Basic delphi'ye de bayağı yakınmış bundan dolayı kolay adapte oldum.

- Fonksiyon doğru çalışıyor.

- 1. Excel'i açın
- 2. Araçlar menüsünden / Makro / Visual Basic Düzenleyicisi ( ALT+F11 deseniz hemen olur)
- 3. Insert menüsünden / Module
- 4. Açılan sayfada aşağıdaki fonksiyonu kopyala / yapıştır yap. Hemen TCKimlikDogrula diye bir fonksiyon başlığı göreceksin.
- 5. Excel'e dön ve dilediğin hücreye geçip şöyle yap

Kod: Tümünü seç

=TCKimlikDogrula(B5)
B5 hücresindeki TCKimlik numarası kontrol edilir True veya False diye yazı çıkar. Sizler bunu kendinize göre güncellersiniz. Geçerli veya Geçersiz gibi.

Afiyet olsun :)

Kod: Tümünü seç

Function TCKimlikDogrula(tcid$)
Dim tmp       As Double
Dim tmp1      As Double
Dim odd_sum   As Double
Dim even_sum  As Double
Dim ChkDigit1 As Double
Dim ChkDigit2 As Double
Dim Toplam    As Double
Dim d(11)     As Integer
Dim n         As Double
If Not Len(tcid$) = 11 Then TCKimlikDogrula = "False" Else:
    tmp = Int(Val(tcid) / 100)
    tmp1 = Int(Val(tcid) / 100)
    For n = 1 To 9
      d(n) = tmp1 Mod 10
      tmp1 = Int(tmp1 / 10)
    Next
    odd_sum = d(9) + d(7) + d(5) + d(3) + d(1)
    even_sum = d(8) + d(6) + d(4) + d(2)
    Total = (odd_sum * 3) + even_sum
    ChkDigit1 = (10 - (Total Mod 10)) Mod 10
    odd_sum = ChkDigit1 + d(8) + d(6) + d(4) + d(2)
    even_sum = d(9) + d(7) + d(5) + d(3) + d(1)
    Total = (odd_sum * 3) + even_sum
    ChkDigit2 = (10 - (Total Mod 10)) Mod 10
    tmp = (tmp * 100) + (ChkDigit1 * 10) + ChkDigit2
    If Not (tmp = Val(tcid)) Then TCKimlikDogrula = "False" Else: 
TCKimlikDogrula = "True"
End Function
Resim
Resim ....Resim
Cevapla