C# ile String Sınıfı (Contains,IsNullOrEmpty,Insert,Replace,Remove, Split,Substring, ToLower,ToUpper,Trim) Kullanımı

Contains methodu metin içerisinde baştan başlayarak sona kadar index'e giderek Küçük ve Büyük harf duyarlığı ile arama yaparak geriye true veya false değer döndürür. Örnek1;Aşağıdaki gibi form tasarlayarak açıklama metni içerisinde textbox girdiğimiz değerin var olup olmadığını sorgulayalım. Nesnelerimiz; txtAra                   : textbox txtAciklama        : textbox btnAra                 : button
1
2
3
4
5
6
7
8
private void btnKontrol_Click(object sender, EventArgs e)
        {
            
            bool _Durum = txtAciklama.Text.Contains(txtAra.Text);
            if (_Durum == true) { MessageBox.Show(String.Format("Aranan içerik ({0}) bulundu.({1})", txtAra.Text, _Durum)); }
            else { MessageBox.Show("Aranan içerik bulunamadı."); }      
        }
  Örnek2:Daha kullanıcı bir örnek açısından Anahtar kelimelerimiz olduğu bir uygulamamız olduğunu düşünelim ve kullanıcı tarafından bu parametrelerin dışarıdan girilerek aktif edilerek ilgili method’un çalıştığı düşünelim. Aşağıdaki gibi form tasarlayalım. txtParametre                     :              textbox txtMetin                             :              textbox btnParametreAktif             :              button   Anahtarımız MailGonderim=E#GuvenlikTrigger=E#AXServisRestart=E#DisIpOgren=E#SqlRestart=E#InternetKontrol=E#TeraziKilo=E#SqlBackupServisCalistir=E# txtParametre girilen anahtarı kontrol ederek ilgili methodumuzu çalıştıralım.  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
private void btnParametreAktif_Click_1(object sender, EventArgs e)
        {
            if ((Boolean)txtParametre.Text.Contains("MailGonderim=E") == true)
            {   // Mail gönderiyle ilgili kod parçacıklarımız
                MessageBox.Show("Mail Gönderimi Aktif Edildi");
            }
            if ((Boolean)txtParametre.Text.Contains("GuvenlikTrigger=E") == true)
            // Güvenlik Trigger ile ilgili kod parçacıklarımız
                MessageBox.Show("Güvenlik Trigger Aktif Edildi");
            }
            if ((Boolean)txtParametre.Text.Contains("AXServisRestart=E") == true)
            { // Ax Servis restart ile ilgili kod parçacıklarımız
                MessageBox.Show("Ax Servis Restart Ediliyor");
            }
            if ((Boolean)txtParametre.Text.Contains("DisIpOgren=E") == true)
            // Diş ip ile ilgili kod parçacıklarımız
                MessageBox.Show("Diş ip öğreniliyor.");
            }
            if ((Boolean)txtParametre.Text.Contains("SqlRestart=E") == true)
            // Sql Server Restart ile ilgili kod parçacıklarımız
                MessageBox.Show("Sql Server Restart ediliyor");
            }
            if ((Boolean)txtParametre.Text.Contains("InternetKontrol=E") == true)
            // İnternet Bağlantısı kontrol ile ilgili kod parçacıklarımız
                MessageBox.Show("İnternet Bağlantısı kontrol edildi.");
            }
            if ((Boolean)txtParametre.Text.Contains("TeraziKilo=E") == true)
            // Teraziden Kilo alımı ile ilgili kod parçacıklarımız
                MessageBox.Show("Teraziden Kilo alımı aktif edildi.");
            }
            if ((Boolean)txtParametre.Text.Contains("SqlBackupServisCalistir=E") == true)
            { // Sql Server Backup Server ile ilgili kod parçacıklarımız
                MessageBox.Show("Sql Server Backup Server çalıştırıldı.");
            }
        }
          IsNullOrEmpty methodu gelen string değerin null ya da boş olma durumu kontrol ederek bize geriye true ve false değer döndür. Kullanışlı bir method olmasına rağmen performans açısından boş olma durumu için (Empt)y tek başına kullanımını daha çok tavsiye ederim. Kullanıcıdan Exchange veya uyumlu bir sunucuya bağlanmak için gerekli bilgileri aldığımız ve uygulamamız da hiçbir alanın boş geçilemediğini düşünelim. Nesnelerimiz, txtSunucu    :      Textbox txtSmtpPort  :      Textbox txtMailAdresi :      Textbox txtKullanici :      Textbox txtParola    :      Textbox btnSinaKaydet :      Button   Sınama ve Kaydet buttonumuz içerisinde gerekli kod parçalarımıza yazalım.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private void btnSinaKaydet_Click(object sender, EventArgs e)
        {
           
            //String değerlerin null ya da boş olma durumunu kontrol ediyoruz.
            if (string.IsNullOrEmpty(txtSunucu1.Text) ||
                string.IsNullOrEmpty(txtSmtpPort1.Text) ||
                string.IsNullOrEmpty(txtMailAdres1.Text) ||
                string.IsNullOrEmpty(txtKullanici1.Text) ||
                string.IsNullOrEmpty(txtParola1.Text))
            {
                MessageBox.Show("Tüm alanlar zorunludur boş geçemezsiniz.");
            }
            else
            {
                MessageBox.Show("Sınama ve Kaydet me işlemi gerçekleştirildi.");
            }
        }
        Insert methodu bir metin içerisine verdiğimiz başlangıç index ve karakterleri ekleme işlemi yapar. Aşağıdaki gibi form tasarlayarak kullanıcı tarafından verilen başlangıç ve kelimeleri açıklama metni içerisine ekleyelim.  
1
2
3
4
5
6
private void btnEkle_Click(object sender, EventArgs e)
        {
            txtInsertMetin.Text =
                txtInsertMetin.Text.Insert(Convert.ToInt32(txtInsertBaslangic.Text), txtInsertKelime.Text);
        }
    Replace methodu UNICODE bir karekteri farklı karekterlere dönüştürmek için kullanılır. Uygulamalarımızda (.)karakterini (,) gibi karekterlere çevirmek zorunda kaldığımız çok olmuştur.bizde bu örneğimizde tanımlı bir metin içerisin belirdiğimiz kelimeleri istediğimiz kelimelere çeviren bir uygulama geliştireceğiz. Aşağıdaki gibi form tasarlayalım. txtReplaceAranan        :     Textbox txtReplaceYeniDeger     :     Textbox txtReplaceAciklama      :     Textbox btnReplace              :     Button
1
2
3
4
5
private void btnReplace_Click(object sender, EventArgs e)
        {
            txtReplaceAciklama.Text =
                txtReplaceAciklama.Text.Replace(txtReplaceAranan.Text, txtReplaceYeniDeger.Text);
        }
      Remove methodu içerisine 2 tane instance bulundurmaktadır.1.instance string değer içerisindeki herşeyi kaldırırken 2. instance string değer içerisinde belirtilen başlangıç index numarasından başlayarak verile silinmek karekter sayısına kadar metin içerisinden silme işlemini gerçekleştirmektedir. Biz örneğimiz de kulanıcı tarafından verilen başlangıç index numarası ile silinmek istenen karekter sayısını alan bir geliştirme yapacağız.
1
2
3
4
5
6
private void btnRemove_Click(object sender, EventArgs e)
        {
            txtRemove.Text =
                txtRemove.Text.Remove(Convert.ToInt32(txtRemoveBaslangic.Text.Text),
                                      Convert.ToInt32(txtRemoveSayisi));
        }
      Split methodu string değer içerisinde istenilen karekter göre ayrıştırmak için kullanılır. Bir örneğimizde kullanıcıdan aldığımız bir metin içerisinden istenilen ayraçlara göre ayrıştırarak bir listbox eklenmesini sağlayan bir uygulama geliştireceğiz. Aşağıdaki gibi form tasarlayalım. TxtSplitKelime             :      Textbox txtSplitAyrac              :      Textbox lsbSplit                   :      Listbox btnSplit                   :      Button
1
2
3
4
5
6
7
8
9
10
11
12
private void btnSplit_Click(object sender, EventArgs e)
{
    
    string[] kelimeler =
            txtSplitKelime.Text.Split(Convert.ToChar(txtSplitAyrac.Text));
    foreach (string kelime in kelimeler)
    {
        lstSplit.Items.Add(kelime);
    }
}
    Substring methodu string değer içerisinden verilen başlangıç noktasından başlayarak istenilen karekter sayına kadar alınmasını sağlanmaktadır. Aşağıdaki gibi form tasarlayalım.
1
2
3
4
5
6
7
private void btnSubstring_Click(object sender, EventArgs e)
        {
            
            MessageBox.Show(
                txtSubString.Text.Substring(Convert.ToInt32(txtSubStringBas.Text),
                                            Convert.ToInt32(txtSubStringBit.Text)));
        }
    ToLower methodu string değerin tüm karekterlini küçük harfe çevirir. ToUpper methodu string değerin tüm karekterlini büyük harfe çevirir. Aşağıdaki gibi form tasarlıyalım. Kullanıcı dan alınan bilgileri listbox küçük ve büyük olarak ekleyelim.
1
2
3
4
5
6
7
private void button1_Click(object sender, EventArgs e)
        {
            //küçük harf olarak ekle
              lsbLowerUpper.Items.Add(txtLowerUpperKelime.Text.ToLower());
            //BÜYÜK HARF OLARAK EKLE
              lsbLowerUpper.Items.Add(txtLowerUpperKelime.Text.ToUpper());
        }
      Trim method’u içerisinde 2 durum bulunur. 1. durum string değerin başta ki ve sonda ki boşlukları silerken 2. durum da ise başta ki ve sonda ki istenilen karekterleri siler. TrimEnd string değer içerisinde sadece sondaki boşlukları ve istenilen karakterleri silmek için kullanılır. Aşağıdaki gibi form tasarlayalım. Nesnelerimiz, TxtTrim                           :      Textbox rgTrim                            :      RadioButton Trim (Boşlukları Temizle)    (0)  :      RadioGroupItem Trim (Karakteri Temizle)     (1)  :      RadioGroupItem TrimEnd (Boşlukları Temizle) (2)  :      RadioGroupItem TrimEnd (Karekteri Temizle)         (3)  :      RadioGroupItem txtKarekter                       :      Textbox btnTrim                           :      Button
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
private void rgTrim_SelectedIndexChanged(object sender, EventArgs e)
        {
            //Karekter Değişim özelliklerinde TxtTrimKarekter nesnesine Enable=True yapıp diğer duruma false yapalım.
            if ((Int16)rgTrim.EditValue == 1)  {txtTrimKarekter.Enabled = true; }
            else if ((Int16)rgTrim.EditValue == 3) {txtTrimKarekter.Enabled = true;}
            else { txtTrimKarekter.Enabled = false; txtTrimKarekter.Text = string.Empty; }
        }
//Kullanıcının seçimini kontrol ederek ilgili trim işlemini gerçekleştirelim.
private void btnTrim_Click(object sender, EventArgs e)
        {
            if ((Int16) rgTrim.EditValue == 0)
            {
                //Baştaki ve sondaki boşlukları temizle
                txtTrimMetin.Text = txtTrimMetin.Text.Trim();
            }
            else if ((Int16)rgTrim.EditValue == 1)
            {
                //Baştaki ve sondaki belirtilen karekterleri temizle
                txtTrimMetin.Text = txtTrimMetin.Text.Trim(Convert.ToChar(txtTrimKarekter.Text));
            }
            else if ((Int16)rgTrim.EditValue == 2)
            {
                //sondaki belirtilen karekterleri temizle
                txtTrimMetin.Text = txtTrimMetin.Text.TrimEnd();
            }
            else if ((Int16)rgTrim.EditValue == 3)
            {
                //Sondaki belirtilen karekterleri temizle
               txtTrimMetin.Text=  txtTrimMetin.Text.TrimEnd(Convert.ToChar(txtTrimKarekter.Text));
            }
        }
 

C# StopWatch Sınıfı Kullanımı

StopWatch sınıfı bizlere metodlarımız, kod parçacıklarımızın ne kadar sürede sonuçlandığı döndürerek bizi kod üzerinde optimizasyon yapmamıza ve daha performanslı yazılımlar geliştirmemizi için tetikleyen, kullanımı çok basit olan ve diğer yapabileceğimiz bir çok yöntemlere göre bu işi yapabileceğiniz en güçlü sınıftır diyebiliriz.   StopWatch  Özellikleri; Elapsed : Toplam Süreyi verir. ElapsedMiliseconds: Toplam Süreyi milisaniye cinsinden verir. IsRunning:Zamanlayıcının çalışıp çalışmadığı gösteririr. (True,False)   StopWatch  Methodları; Start : StopWatch  nesnesini başlatır. Reset :  süreyi sıfırlar ve stopwatch nesnesini durdurur. Restart :  süreyi sıfırlar ve yeniden başlar. StartNew : yeni bir zamanlayıcı başlatır. Stop: StopWatch  nesnesini dudurur.   Bizde Kaprekar Sayılarını  hesaplama bir metod yazarak basit bir örnekle StopWatch nesnemizi nasıl kullanıldığına göz atalım.   Kaprekar Sayıları (Vikipedi) Kaprekar sayıları , 1949 yılında Hintli matematikçi Kaprekar tarafından tariflenen sayılardır. n basamaklı bir t Kaprekar sayısının karesi alınıp sağdaki n basamağı solda kalan n-1 basamağa eklendiğinde sonuç yine t sayısını verir. Örnek: 55 , iki basamaklı bir sayıdır. 552 = 3025 , sağdan iki basamak 25 , soldan iki basamak 30. Bu iki sayının toplamı 30+25=55 yani sayının kendisidir. 1, 9, 45, 55, 99, 297, 703, 999, 2223, 2728, 4879 sayıları da diğer bazı Kaprekar sayılarıdır.   İlk öncelikle aşağıdaki gibi bir form tasarlıyalım. Nesnelerimiz, lsbListe                                :              listbox txtSayi1                               :              Textbox txtSayi2                               :              Textbox btnKaprekarHesapla              :              Button   şimdi kaprekar sayılarımızı hesaplamak için Kaprekar_Sayilari adında bir sınıf oluşturalım ve içerisine bize bir List döndüren method yazalım.          

public class Kaprekar_Sayilari
{

private string karakter, ilkSayi, sonSayi, sonuc2;
private int bul ,basamak ,sonuc, sonuc3 ;

private List Dizi = new List();

public List Kaprekar_Sayilari_Hesapla(int _BaslangicSayi, int _BitisSayisi)
{

for (int i = _BaslangicSayi; i <= _BitisSayisi; i++)
{

sonuc = i * i;
karakter = Convert.ToString(i);

basamak = karakter.Length;
sonuc2 = Convert.ToString(sonuc);
sonuc3 = sonuc2.Length;

bul = (sonuc3 - basamak);
ilkSayi = sonuc2.Substring(bul, basamak);
sonSayi = sonuc2.Substring(0, bul);

if (i == (int.Parse(ilkSayi) + int.Parse(sonSayi)))
{
Dizi.Add(i);
}

}
return Dizi;
}
}

 

Şimdi de oluşturduğumuz methodumuzu çağırarak Listbox içerisine methodumuzdan dönen değerleri alarak StopWatch nesnemizin yardımıyla da methodumuzun ne kadar sürede tamamlandığı messagebox’a gösterelim.
private void Hesapla_Click(object sender, EventArgs e)
{
//Stopwatch nesnemizi oluşturduk.
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();

//Kaprekar_Sayilar sınıfımız
Kaprekar_Sayilari _Kaprekar_Sayilari = new Kaprekar_Sayilari();

//Kaprekar sınıfımızın bizden istediği parametrelere değer atayarak dönen sonucu listbox datasource yüklüyoruz.
lsbListe.DataSource =
_Kaprekar_Sayilari.Kaprekar_Sayilari_Hesapla
(Convert.ToInt32(txtSayi1.Text), Convert.ToInt32(txtSayi2.Text));

//Stopwatch nesnemizi kapatıp süreyi gösteriyoruz.
stopwatch.Stop();
MessageBox.Show("Süre :" + stopwatch.Elapsed);

}

C# ile Lisanslama Aracı Geliştirmek

Geliştirdiğimiz uygulamaları her zaman bir lisanslama, izinsiz kullanımları engelleme ihtiyacı duyarız. Bu hatta basit çaplı geliştirdiğimiz uygulama için bile bazen ihtiyacımız söz konusu olur. Genellikle yazılım firmaları, geliştiriciler kendi lisanslama algoritmaları oluşturur ya da 3.parti (TNTLicensing )gibi yazılımlar kullanma yoluna gider. Bizde şimdi kendi algoritmamızı oluşturarak, geliştirdiğimiz uygulamaları lisanslamak için bir araç geliştirelim. Kurgumuz, 13 haneden oluşan bir serimiz olduğu düşünelim, Serimizin ilk3 hanesi  (Yil + (Saniye * 12) + Ay) İkinci 3 hanesi  (Gün + (Saniye * 7)+ Saat) Üçüncü 3 hanesi  (Dakika + (Saniye * 19)+Saniye) serimizin son 4 hanesi de işlemcinin Id numarasından oluşsun. Bu sayede uygulamamız lisanslamadığı sürece her açıldığı farklı bir seri üretmiş olacağız. Şimdi aşağıdaki gibi form oluşturalım, Nesnelerimiz, btnSeriUret                        :Button btnAnahtarUrt                    :Button txtSeriUret                        :MaskedTexBox txtAnahtaUret                    :MaskedTexBox   Btn_SeriUret butonumuzda oluşturarak istediğimiz seriyi üretmek için kodlarımızı yazmaya başlayalım,

string cpuInfo = String.Empty;

string temp = String.Empty;

int sayiDeger = 1000;

// işlemcimizin Id içerisinde bulunan sadece sayısal değerleri alarak başlangıç değeri olarak atadığımız 1000 üzerine ekletiyoruz.

ManagementClass mc = new ManagementClass("Win32_Processor");

ManagementObjectCollection moc = mc.GetInstances();

foreach (ManagementObject mo in moc)

{

if (cpuInfo == String.Empty)

{

string deger = mo.Properties["ProcessorId"].Value.ToString();

for (int i = 0; i &lt; deger.Length; i++)

{

if (Char.IsDigit(deger[i]))

{

sayiDeger += deger[i];

}

}

}

}

txtSeri.Text =

&nbsp;

// 1 (Yil + (Saniye * 165) + Ay)

&nbsp;

(Convert.ToInt32(DateTime.Now.Year)

<ul>
<li>Convert.ToInt32(DateTime.Now.Second * 12)</p></li>
<li><p>Convert.ToInt32(DateTime.Now.Month)).ToString().Substring(1, 3)</p></li>
</ul>

<p>&nbsp;

//2 (Gün + (Saniye * 896)+ Saat)

&nbsp;

<ul>
<li>(DateTime.Now.Day.ToString() + Convert.ToInt32(DateTime.Now.Second * 7)</p></li>
<li><p>DateTime.Now.Hour.ToString()).Substring(0, 3)</p></li>
</ul>

<p>&nbsp;

//3 (Dakika + (Saniye * 648)+Saniye)

&nbsp;

<ul>
<li>(DateTime.Now.Minute.ToString() + Convert.ToInt32(DateTime.Now.Second * 19)</p></li>
<li><p>DateTime.Now.Second.ToString()).Substring(0, 3)</p></li>
</ul>

<p>&nbsp;

//4  İşlemci Id

&nbsp;

<ul>
<li>sayiDeger.ToString().Substring(0, 4);</li>
</ul>

  Kabaca bir seri ürettiğimiz göre şimdi bu seriyi eşleyecek bir anahtar kontrolü yazmamız gerekecek,   12 haneli 4 gruplardan oluşan ve seri numarasından değerler alarak basitçe bir anahtar numarası üretelim.   BtnAnahtarUret butonumuz da, oluşturmak istediğimiz anahtar numaramızı üretmek için kodlarımızı yazalım.   // Daha rahat okumanız adına 12 tane değerleri tutması için string değişkenler tanımladım ve bu değişklerimizde kuracağımız formüllerin değerlerini atayacağız.

string _deger1 = null

, _deger2 = null

, _deger3 = null

, _deger4 = null

, _deger5 = null

, _deger6 = null

, _deger7 = null

, _deger8 = null

, _deger9 = null

, _deger10 = null

, _deger11 = null

, _deger12 = null;

&nbsp;

//  (Math.Abs((Seri10 - Seri1 + Seri5 +Seri4 + Seri7) * 19 * (seri8 + seri2))) % 10)

&nbsp;

_deger1 = (Math.Abs(

&nbsp;

(Convert.ToInt16(txtSeri.Text.Substring(13, 1))

<ul>
<li>Convert.ToInt16(txtSeri.Text.Substring(0, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(6, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(5, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(9, 1)))</p></li>
<li><p>19</p></li>
<li><p>(Convert.ToInt16(txtSeri.Text.Substring(10, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(1, 1)))) % 10).ToString();</p></li>
</ul>

<p>&nbsp;

//  (Math.Abs(( Seri10 + Seri11 – Seri12 + Seri8) - (Seri8 + (Seri5 + Seri3)))* 7) % 10)

_deger2 = (Math.Abs(

&nbsp;

(Convert.ToInt16(txtSeri.Text.Substring(13, 1))

<ul>
<li>Convert.ToInt16(txtSeri.Text.Substring(14, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(15, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(10, 1)))</p></li>
</ul>

<p>&nbsp;

-(Convert.ToInt16(txtSeri.Text.Substring(10, 1))

+(Convert.ToInt16(txtSeri.Text.Substring(6, 1))

<ul>
<li>Convert.ToInt16(txtSeri.Text.Substring(2, 1))))*7) % 10).ToString();</li>
</ul>

_deger3 = (Math.Abs(
(Convert.ToInt16(txtSeri.Text.Substring(1, 1))
* Convert.ToInt16(txtSeri.Text.Substring(5, 1))
* Convert.ToInt16(txtSeri.Text.Substring(9, 1)))

<ul>
<li>(Convert.ToInt16(txtSeri.Text.Substring(2, 1))</li>
<li>(Convert.ToInt16(txtSeri.Text.Substring(6, 1))</li>
<li>(Convert.ToInt16(txtSeri.Text.Substring(10, 1))</li>
<li>Convert.ToInt16(txtSeri.Text.Substring(0, 1)))))* 6) % 10).ToString();</li>
</ul>

_deger4 = (Math.Abs(
(Convert.ToInt16(txtSeri.Text.Substring(12, 1))
- Convert.ToInt16(txtSeri.Text.Substring(0, 1))
+ Convert.ToInt16(txtSeri.Text.Substring(6, 1))
+ Convert.ToInt16(txtSeri.Text.Substring(5, 1))
+ Convert.ToInt16(txtSeri.Text.Substring(8, 1)))
- 19
- (Convert.ToInt16(txtSeri.Text.Substring(10, 1))
+ Convert.ToInt16(txtSeri.Text.Substring(1, 1)))) % 10).ToString();

&nbsp;

&nbsp;

//

_deger5 = (Math.Abs(

&nbsp;

(Convert.ToInt16(txtSeri.Text.Substring(10, 1))

<ul>
<li>Convert.ToInt16(txtSeri.Text.Substring(14, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(5, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(0, 1)))</p></li>
</ul>

<p>&nbsp;

<ul>
<li>(Convert.ToInt16(txtSeri.Text.Substring(5, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(6, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(8, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(0, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(1, 1))) + 19) % 10).ToString();</p></li>
</ul>

<p>&nbsp;

//

_deger6 = (Math.Abs(

&nbsp;

(Convert.ToInt16(txtSeri.Text.Substring(1, 1))

<ul>
<li>Convert.ToInt16(txtSeri.Text.Substring(4, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(6, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(9, 1)))</p></li>
</ul>

<p>&nbsp;

<ul>
<li>(Convert.ToInt16(txtSeri.Text.Substring(2, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(6, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(10, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(14, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(15, 1))) - 19) % 10).ToString();</p></li>
</ul>

<p>&nbsp;

//

_deger7 = (Math.Abs(

&nbsp;

(Convert.ToInt16(txtSeri.Text.Substring(12, 1))

<ul>
<li>Convert.ToInt16(txtSeri.Text.Substring(14, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(15, 1)))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(13, 1))</p></li>
</ul>

<p>&nbsp;

<ul>
<li>(Convert.ToInt16(txtSeri.Text.Substring(8, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(4, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(0, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(2, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(6, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(15, 1))) * 6) % 10).ToString();</p></li>
</ul>

<p>&nbsp;

//

_deger8 = (Math.Abs(

&nbsp;

(Convert.ToInt16(txtSeri.Text.Substring(13, 1))

<ul>
<li>Convert.ToInt16(txtSeri.Text.Substring(14, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(15, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(10, 1)))</p></li>
</ul>

<p>&nbsp;

<ul>
<li>(Convert.ToInt16(txtSeri.Text.Substring(10, 1))</p></li>
<li><p>(Convert.ToInt16(txtSeri.Text.Substring(6, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(2, 1)))) * 19) % 10).ToString();</p></li>
</ul>

<p>//

_deger9 = (Math.Abs(

&nbsp;

(Convert.ToInt16(txtSeri.Text.Substring(12, 1))

<ul>
<li>Convert.ToInt16(txtSeri.Text.Substring(14, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(15, 1)))</p></li>
</ul>

<p>&nbsp;

<ul>
<li>Convert.ToInt16(txtSeri.Text.Substring(13, 1))</li>
</ul>

&nbsp;

<ul>
<li>(Convert.ToInt16(txtSeri.Text.Substring(8, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(4, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(0, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(2, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(6, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(15, 1))) * 6) % 10).ToString();</p></li>
</ul>

<p>&nbsp;

&nbsp;

//

_deger10 = (Math.Abs(

&nbsp;

(Convert.ToInt16(txtSeri.Text.Substring(13, 1))

<ul>
<li>Convert.ToInt16(txtSeri.Text.Substring(14, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(15, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(10, 1)))</p></li>
</ul>

<p>&nbsp;

<ul>
<li>(Convert.ToInt16(txtSeri.Text.Substring(10, 1))</p></li>
<li><p>(Convert.ToInt16(txtSeri.Text.Substring(6, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(2, 1)))) * 7) % 10).ToString();</p></li>
</ul>

<p>&nbsp;

//

&nbsp;

_deger11 = (Math.Abs(

(Convert.ToInt16(txtSeri.Text.Substring(6, 1))

<ul>
<li>Convert.ToInt16(txtSeri.Text.Substring(8, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(9, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(1, 1)))</p></li>
</ul>

<p>&nbsp;

<ul>
<li>(Convert.ToInt16(txtSeri.Text.Substring(9, 1))</p></li>
<li><p>(Convert.ToInt16(txtSeri.Text.Substring(4, 1))</p></li>
<li><p>(Convert.ToInt16(txtSeri.Text.Substring(8, 1))</p></li>
<li><p>(Convert.ToInt16(txtSeri.Text.Substring(4, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(9, 1))))))+4) % 10).ToString();</p></li>
</ul>

<p>&nbsp;

//

_deger12 = (Math.Abs(

(Convert.ToInt16(txtSeri.Text.Substring(5, 1))

<ul>
<li>Convert.ToInt16(txtSeri.Text.Substring(8, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(6, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(4, 1)))</p></li>
</ul>

<p>&nbsp;

<ul>
<li>(Convert.ToInt16(txtSeri.Text.Substring(10, 1))</p></li>
<li><p>(Convert.ToInt16(txtSeri.Text.Substring(8, 1))</p></li>
<li><p>(Convert.ToInt16(txtSeri.Text.Substring(2, 1))</p></li>
<li><p>(Convert.ToInt16(txtSeri.Text.Substring(1, 1))</p></li>
<li><p>Convert.ToInt16(txtSeri.Text.Substring(0, 1)))))) * 19) % 10).ToString();</p></li>
</ul>

<p>&nbsp;

&nbsp;

//  Anahtar MaskedTexbox umuza değerlerimi atayalım.

&nbsp;

txtAnahtar.Text =  _deger1 + _deger2 + _deger3 + _deger4 + _deger5

<ul>
<li>_deger6 + _deger7 + _deger8 + _deger9 + _deger10</p></li>
<li><p>_deger11 + _deger12;</p></li>
</ul>

<p>
    Kabaca bir Lisanslama aracı geliştirmiş olduk şimdi de uygularımızda bu lisanslama aracını nasıl kullanabiliriz bir bakalım. İlk öncelikle geliştirmiş olduğumuz farklı bir uygulamamız çalışmadan önce lisanslama yapılıp yapılmadığı kontrol edelim. Bildiğiniz gibi projelerimizde program.cs dosyası çalıştırılma anında ilk çalışandır biz de burada daha formlarımız falan yüklemeden lisanslama işleminin yapılıp yapılmadığını bir kontrol edelim.   Bunun içinde uygulamızın properties.setting de Lisans adında özellik oluşturalım ve default değeri:0 olsun   1-Solution Projemizi seçelim 2- Project -> Properties –> Setting 3-Yeni bir row oluşturalım (Lisans) 4-Value = 0     Program.cs   // Lisanslamanın yapılıp yapılmadığını kontrol edelim.      

static void Main()

{

if (Properties.Settings.Default.Lisans == 0)

{

Application.EnableVisualStyles();

Application.SetCompatibleTextRenderingDefault(false);

Application.Run(new Form_Lisans());

}

else

{

Application.EnableVisualStyles();

Application.SetCompatibleTextRenderingDefault(false);

Application.Run(new Form_Login());

 

}

}

Lisanslama ekranı için sizde aşağıdaki gibi örnek bir form oluşturun ve daha önce yazdığımız kodlarımızı burada kullanın   Onay butonumuz da elde ettiğimiz anahtarımız ile Anahtar textbox girilen değeri kontrol edelim. Geçerli bir anahtar girilmiş ise Lisans value değerini = 1 yapalım.
if (txtAnahtar.Text == _Onay )
{
Properties.Settings.Default.Lisans = 1;
Properties.Settings.Default.Save();
MessageBox.Show("Lisanslama işlemi başarıyla gerçekleştirildi."
, "Bilgi"
, MessageBoxButtons.OK
, MessageBoxIcon.Information
, MessageBoxDefaultButton.Button1);
}
else
{
MessageBox.Show("Geçersiz bir Anahtar kodu girdiniz."
, "Bilgi"
, MessageBoxButtons.OK
, MessageBoxIcon.Information
, MessageBoxDefaultButton.Button1);
}

WriteXml Metodu

Merhaba Arkadaşlar, WriteXml metodu içerisinde 8 adet yapıcı(Constructor) bulundurur. Verdiğimiz bilgileri xml formatına çevirerek bir xml dosyası oluşturmaya yarar. Biz yazacağımız method ‘ta dosya yolunu ve Xml yazma mod’unu alan yapıcıyı kullanacağız. Gelin basit bir örnek yaparak WriteXml metodunu daha iyi anlamaya çalışalım.   Continue reading

Overload Kavramı

Merhaba Arkadaşlar, Bu makalemizde size overload kavramından bahsedeceğim. overload nedir’e gelirsek Türkçe anlamı aşırı yüklemedir. Bir sınıf  içerisinden birden fazla metodun aynı ismi alarak fakat farklı parametreler  almasıyla farklı görevleri yerine getirmesidir. Overload kavramımızı daha iyi anlamak için bir örnek yapalım.ilk olarak basit bir örnekle rahat bir şekilde anlamaya çalışalım.   Continue reading

Transaction Kavramı

Merhaba Arkadaşlar, Transaction kavramı çok katmanlı mimarilerde ve veri tabanı programlacığın da kullanılan çok önemli bir kavramdır. Yapacağınız bütün çok katmanlı uygulamalarda mutlaka kullanmanız gerekecektir. Nasıl çalışır a gelirsek bir süreçteki iş parçacıkları görevlerini kusursuz bir şekilde yerine getirdiğinde süreç sorunsuz bir şekilde tamamlandığında commit dediğimiz olay gerçekleşir ve işlem tamamlanmış olur. Eğer iş parçacıkları görevlerini yerine getirirken herhangi bir sorundan dolayı hata oluşursa bütün yapılan işlemler geriye doğru giderek rollback dediğimiz olay gerçekleşir.   Continue reading