CategoryC#

C# TcKimlik Algoritması

C
  • TC Kimlik numaraları 11 basamaktan oluşmaktadır.
  • İlk 9 basamak arasında kurulan bir algoritma bize 10. basmağı, ilk 10 basamak arasında kurulan algoritma ise bize 11. basamağı verir.
  • 11 hanelidir.
  • Her hanesi rakamsal değer içerir.
  • İlk hane 0 olamaz. 1. 3. 5. 7. ve 9. hanelerin toplamının 7 katından, 2. 4. 6. ve 8. hanelerin toplamı çıkartıldığında, elde edilen sonucun 10’a bolumunden kalan, yani Mod10’u bize 10. haneyi verir.
  • İlk 10 hanenin toplamından elde edilen sonucun 10’a bolumunden kalan, yani Mod10’u bize 11. haneyi verir.

 

[csharp]

private bool TcKimlikDogrulama(string pTCKimlik)
{
if (pTCKimlik.Length < 11)
return false;
else if (pTCKimlik.Substring(0, 1) == "0")
return false;

int toplam1 = Convert.ToInt32(pTCKimlik[0].ToString()) + Convert.ToInt32(pTCKimlik[2].ToString()) + Convert.ToInt32(pTCKimlik[4].ToString()) + Convert.ToInt32(pTCKimlik[6].ToString()) + Convert.ToInt32(pTCKimlik[8].ToString());
int toplam2 = Convert.ToInt32(pTCKimlik[1].ToString()) + Convert.ToInt32(pTCKimlik[3].ToString()) + Convert.ToInt32(pTCKimlik[5].ToString()) + Convert.ToInt32(pTCKimlik[7].ToString());

int sonuc = ((toplam1 * 7) – toplam2) % 10;

if (sonuc.ToString() != pTCKimlik[9].ToString())
return false;

int toplam3 = 0;
for (int i = 0; i < 10; i++)
toplam3 += Convert.ToInt32(pTCKimlik[i].ToString());

if ((toplam3 % 10).ToString() != pTCKimlik[10].ToString())
return false;

return true;
}

[/csharp]

Update Panel içerisindeki Repeater da LinkButton kulanırken oluşan PostBack sorunu

U

Update panel içerisindeki repeater’ın itemtemplate’inde linkbutton kullanıyorsanız event gerçekleştiğinde (butona tıklandığında) ajax isteği yerine sayfanın komple post/postback olmasıyla karşılaşabiliyorsunuz. Ufak bir eklentiyle sorun giderilebiliyormuş, maalesef çözümünü bulmam saatlerimi aldı :)

Repater’ ın attribute lerine (taglerine,özelliklerine vb.) aşağıdaki kodu eklemeniz yeterli oluyor.

[csharp]ClientIdMode = "AutoId"[/csharp]

Cannot evaluate expression because a thread is stopped at a point where garbage collection is impossible, possibly because the code is optimized.

C

İlgili Hata:

Cannot evaluate expression because a thread is stopped at a point where garbage collection is impossible, possibly because the code is optimized.

Projenizde Structure kullandığınız da ve bu Structure’ın içeriği 256 byte üzerine çıktığında bu hata meydana gelebiliyor. En pratik ve geleceğe yönelik çözüm Structure yerine Class yapısı tercih etmeniz olacaktır. Alternatif olarak Structureları parçalayabileceğinizden de bahsedilmiş.

Sorunla ilgili MDSN blogunda yayınlanan makaleye aşağıdaki linkten ulaşabilirsiniz.

tıklayın.

Burada da farklı bir çözüm yolu anlatılmış, deneyebilirsiniz:

tıklayın.

Could not load type ‘System.Runtime.CompilerServices.ExtensionAttribute’ from assembly ‘mscorlib

C

Could not load type ‘System.Runtime.CompilerServices.ExtensionAttribute’ from assembly ‘mscorlib

tarzında bir hata alıyorsanız, bunun nedeni genellikle projenizin framework sürümünden farklı olan bir dll i projenizde kullanmanızdan oluyor.

Örnek vermek gerekiyorsa .NET Framework 4.0 ile yazdığınız bir proje Devexpress yada Telerik componentlerinin yada farklı bir eklentinin 4.5 ile derlenmiş sürümünü kullandığınızda bu hata meydana geliyor. Hatayı gidermek için kullanmış olduğunuz framework ile uyumlu olanları seçmeniz/bulmanız gerekmektedir.

Silverlight Kontrollere Ulaşmak

S

Silverlight ile kod tarafında veritabanımızdan gelen yada dinamik üretilen değerlerle kontrollerle ulaşmak isteyebiliriz. Benim projemde silverlight uygulamam üzerindeki butonlara dinamik olarak ulaşabilmem ve değerlerini düzenleyebilmem gerekiyordu. Aşağıdaki gibi yöntem izledim.

[csharp]

FrameworkElement root = (FrameworkElement)Application.Current.RootVisual;
Button x = root.FindName("UlasilacakButonunAdi") as Button;

[/csharp]

Build, Rebuild, Compile ve Clean Arasındaki Farklar

B

Hepimiz projemizi çalıştırmadan önce derliyoruz, derleme işlemini gerçekleştirmeden çalıştırsak dahi Visual Studio bizim yerimize derleme işlemini yapıyor. Aşağıdaki yazıdan derleme türlerinin neler olduğunu öğrenebilirsiniz. Yazılanlar Visual Studio için geçerlidir, geliştirme araçlarına göre farklılıklar gösterebilir.

Compile: Sadece editör de o an açık olan sayfayı derler.

Build: En son yapılan build işleminden sonra üzerinde değişiklik yapılan tüm dosyaları derler.

Rebuild: Herhangi bir durumu dikkate almaksızın projenin tamamını yeniden derler. Tüm proje yeniden derleneceğinden Build işlemine göre daha uzun sürecektir ancak build ile derleme sırasında oluşan hataları rebuild ile çözebilirsiniz.

Clean: Derleme sonrasında oluşan geçici ve kalıcı tüm dosyalar temizlenir. Bir sonraki derleme işleminde temiz bir başlangıç yapılır. Genellikle proje kodları bir başkasına gönderilmek istenildiğinde hem proje boyutunu ufaltmak hemde gereksiz dosyalardan kurtulmak adına tercih edilir.

Umarım faydalı olmuştur :)

Visual Studio Hata Mesajlarının Dilini Değiştirmek

V

Web sitemizin yada programımızın farklı bir dilde hata vermesini isteyebiliriz. Özellikle bir hata ile karşılaştığımızda Türkçe kaynak sıkıntısı nedeniyle hatayı İngilizce olarak araştırıp çözüp bulmak çok daha pratik oluyor. Aşağıdaki kodu projenizin load aşamasında girerek hata mesajlarını istediğiniz dile çevirebilirsiniz.

[csharp]System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("En");[/csharp]

* En yerine istediğiniz dilin kısaltmasını yazabilirsiniz.

String was not recognized as a valid DateTime

S

String was not recognized as a valid DateTime

Yukarıdaki hata ile genellikle bir string veriyi datetime formatına çevirirken karşılaşıyoruz. Öncelikle datetime formatına çevirmek istediğimiz string verinin çevrilebilir bir şekilde geldiğinden emin olmalıyız.

Hatanın bir diğer nedeni ise sunucunun tarih formatının yanlış olması olabiliyor. Sunucunuzun bölge ayarlarından tarihin 15.06.2011 15:34 gibi olduğundan emin olun. Eğer bu şekildeyse ve sorun halen devam ediyorse web.config dosyamızda bir takım değişiklikler yaparak sorunu gidebiliriz.

Web.config te yapacağımız bu değişiklik ile yazılımımız/web sitemiz sunucunun saat ayarını değil web.config dosyasına girmiş olduğumuz saat ayarını kullanacak. Aşağıdaki kodları <system.web> içerisine yazmanız gerekmektedir.

[csharp]<globalization
culture="tr-TR"
uiCulture="tr-TR"
/>[/csharp]

Asp.Net IP Adresi Almak

A

Aşağıdaki komutları kullanarak sitenize giren kullanıcıların ip adreslerini öğrenebilirsiniz.

[csharp]Request.UserHostAddress;[/csharp]

veya

[csharp]Request.ServerVariables["REMOTE_ADDR"];[/csharp]

Get in touch

Quickly communicate covalent niche markets for maintainable sources. Collaboratively harness resource sucking experiences whereas cost effective meta-services.