C#'da TryParse Komutunun Kullanımı

burak125

Hectopat
Katılım
28 Ocak 2014
Mesajlar
54
Yer
İstanbul, Turkey
Daha fazla  
Cinsiyet
Erkek
Meslek
ÖĞRENCİ
Merhaba arkadaşlar. texBox'ta yazılı olan tutarın nasıl yazıya çevrileceğinin kodları:
Kod:
private string yaziyaCevir(decimal tutar)
{
    string sTutar = tutar.ToString("F2").Replace('.', ','); // Replace('.',',') ondalık ayracının . olma durumu için         
    string lira = sTutar.Substring(0, sTutar.IndexOf(',')); //tutarın tam kısmı
    string kurus = sTutar.Substring(sTutar.IndexOf(',') + 1, 2);
    string yazi = "";     
          
    string[] birler = { "", "BİR", "İKİ", "Üç", "DÖRT", "BEŞ", "ALTI", "YEDİ", "SEKİZ", "DOKUZ" };
    string[] onlar = { "", "ON", "YİRMİ", "OTUZ", "KIRK", "ELLİ", "ALTMIŞ", "YETMİŞ", "SEKSEN", "DOKSAN" };
    string[] binler = { "KATRİLYON", "TRİLYON", "MİLYAR", "MİLYON", "BİN", "" }; //KATRİLYON'un önüne ekleme yapılarak artırabilir.
    int grupSayisi = 6; //sayıdaki 3'lü grup sayısı. katrilyon içi 6. (1.234,00 daki grup sayısı 2'dir.)
                        //KATRİLYON'un başına ekleyeceğiniz her değer için grup sayısını artırınız.
    lira = lira.PadLeft(grupSayisi * 3, '0'); //sayının soluna '0' eklenerek sayı 'grup sayısı x 3' basakmaklı yapılıyor.         
      
    string grupDegeri;
  
    for (int i = 0; i < grupSayisi * 3; i += 3) //sayı 3'erli gruplar halinde ele alınıyor.
    {
        grupDegeri = "";
        if (lira.Substring(i, 1) != "0")
            grupDegeri += birler[Convert.ToInt32(lira.Substring(i, 1))] + "YÜZ"; //yüzler             
        if (grupDegeri == "BİRYÜZ") //biryüz düzeltiliyor.
            grupDegeri = "YÜZ";
        grupDegeri += onlar[Convert.ToInt32(lira.Substring(i + 1, 1))]; //onlar
        grupDegeri += birler[Convert.ToInt32(lira.Substring(i + 2, 1))]; //birler             
        if (grupDegeri != "") //binler
            grupDegeri += binler[i / 3];
        if (grupDegeri == "BİRBİN") //birbin düzeltiliyor.
            grupDegeri = "BİN";
            yazi += grupDegeri;
    }
          
    if (yazi != "")
        yazi += " TL ";
    int yaziUzunlugu = yazi.Length;
    if (kurus.Substring(0, 1) != "0") //kuruş onlar
        yazi += onlar[Convert.ToInt32(kurus.Substring(0, 1))];
          
    if (kurus.Substring(1, 1) != "0") //kuruş birler
        yazi += birler[Convert.ToInt32(kurus.Substring(1, 1))];
    if (yazi.Length > yaziUzunlugu)
        yazi += " Kr.";
    else
    yazi += "SIFIR Kr.";
    return yazi;
}
fakat
Kod:
label1.Text = yaziyaCevir(Convert.ToDecimal(textBox1.Text));
kodlarıyla yazdırırsak ki sıkıntı; silemeyiz. Yani diyelim tutarımız 123456789 TL ama biz 987654321 TL yazdık silmemiz gerekiyor ve sildiğimizde hata veriyor. Bunun çözümünün TryParse() komutu olabileceğini öğrendim ama nasıl kullanılacağını öğrenemedim...
 
Merhabalar,

Kod:
         private void textBox1_TextChanged(object sender, EventArgs e)
        {
            string adayTutar = textBox1.Text;
            decimal adaySayi;

            /*
             Eğer kullanıcı gerçekten de bir sayı girişi yapmış ise
             adayTutarın değeri adaySayi değişkenine aktarılır.
             yazıyaCevir metodunuz adaySayi parametresi ile çalışarak sonuç görüntülenir
            */
            if (decimal.TryParse(adayTutar, out adaySayi))
            {
                label1.Text = yaziyaCevir(adaySayi);
                label1.ForeColor = Color.Green;
            }
            else//Eğer sayı girilmemiş ise tryparse metodu false döndüreceğinden else çalısır ve hata mesajını kullanıcıya gösteririz
            {
                label1.Text = "Sayı hatalı";
                label1.ForeColor = Color.Red;
            }
        }
 
Uyarı! Bu konu 11 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı