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 9 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.

Geri
Yukarı