C# "Input string was not in a correct format." hatası

nobody946

Doçent
Katılım
4 Mayıs 2012
Mesajlar
508
Reaksiyon puanı
2
Puanları
18
Beyler C# ile dosya işlemleri üzerine bir konsol uygulaması yazmaya çalıştım kodları burda:
Kod:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Dosya Açmak İçin 1\nDosya Yazmak İçin 2\nDosya Oluşturmak İçin 3 yazıp Enter'a basın.");
            Int32 sayi;
            sayi = Convert.ToInt32(Console.ReadLine());
            if (sayi==1)
            {
                Console.WriteLine("Dosya açma işlemi yükleniyor...");
                goto dosyaacmaislemibasla;
            }
            else if (sayi==2)
            {
                Console.WriteLine("Dosya yazma işlemi yükleniyor...");
                goto dosyayazmaislemibasla;
            }
            else if (sayi==3)
            {
                Console.WriteLine("Dosya oluşturma işlemi yükleniyor...");
                goto dosyaolustumaislemibasla;
            }
    
            
    dosyaacmaislemibasla:
        Console.WriteLine("Lütfen dosyanın tam yolunu yazınız ve Enter'a basınız.");
        String dosya;
        dosya = Convert.ToString(Console.ReadLine());
        StreamReader ac;
        ac = File.OpenText(dosya);
        string yazi;
        yazi = ac.ReadLine();
        while (yazi != null)
        {
            Console.WriteLine("\n");
            Console.WriteLine(yazi);
            yazi = ac.ReadLine();
        }
        ac.Close();
            /*işlem bitti*/
        goto bitti;

    dosyayazmaislemibasla:
        Console.WriteLine("Lütfen dosyanın tam yolunu yazınız ve Enter'a basınız, eğer dosyayı oluşturmak istiyorsanız 4 yazıp Enter'a basınız.");

        string dosyayolu;
        dosyayolu = Convert.ToString(Console.ReadLine());

        if (Convert.ToInt32(dosyayolu)==4)
        {
            goto dosyaolustumaislemibasla;
        }
        else
        {
            Console.WriteLine("Dosya adı.uzantısı şeklinde giriniz. (örneğin: ali.txt)");
            string uzanti;
            uzanti = Convert.ToString(Console.ReadLine());
            
            Console.WriteLine("Dosyanın üstüne yazmak istiyorsanız 1, altına eklemek istiyorsanız 2 ye basıp Enter'a basın.");
         Int32 girilen;
         girilen = Convert.ToInt32(Console.ReadLine());
         if (girilen==1)
         {
             StreamWriter dosya2 = new StreamWriter(dosyayolu+uzanti);
         
         satirgir:
             Console.WriteLine("Lütfen satırı giriniz ve Enter'a basınız.\n");
             dosya2.WriteLine(Console.ReadLine());
             Console.WriteLine("Yeni satır girmek için 1, Dosyadan çıkmak için 2 yazıp Enter'a basınız.");
             if (Convert.ToInt32(Console.ReadLine()) == 1)
             {
                 goto satirgir;
             }
             else if (Convert.ToInt32(Console.ReadLine()) == 2)
             {
                 dosya2.Close();
             }
         }
         else if (girilen==2)
         {
             StreamWriter dosya3;
             dosya3 = File.AppendText(dosyayolu + uzanti);
         
         satirgir2:
             Console.WriteLine("Lütfen satırı giriniz ve Enter'a basınız.\n");
             dosya3.WriteLine(Console.ReadLine());
             Console.WriteLine("Yeni satır girmek için 1, Dosyadan çıkmak için 2 yazıp Enter'a basınız.");
             if (Convert.ToInt32(Console.ReadLine()) == 1)
             {
                 goto satirgir2;
             }
             else if (Convert.ToInt32(Console.ReadLine()) == 2)
             {
                 dosya3.Close();
             }
         }
        }
        goto bitti;

    dosyaolustumaislemibasla:
        Console.WriteLine("\nLütfen dosya adını giriniz.");
        string dosyaadi;
        dosyaadi=Convert.ToString(Console.ReadLine());

        Console.WriteLine("\nLütfen dosya uzantısını giriniz.");
        string dosyauzantisi;
        dosyauzantisi=Convert.ToString(Console.ReadLine());
        
        Console.WriteLine("\nLütfen dosyanın oluşturulacağı tam yolu giriniz. (örneğin C:\\klasör1 )");
        string dosyayolu2;
        dosyayolu2 = Convert.ToString(Console.ReadLine());

        Console.WriteLine("\n\nDosyayı oluşturmak için Enter'a basın");
        Console.ReadLine();

        File.Create(dosyayolu2 + dosyaadi + dosyauzantisi);

        Console.WriteLine("\nDosya oluşturuldu.");

        goto bitti;

    bitti:
        Console.WriteLine("\n\nİşlem tamamlandı. Çıkmak için Enter'a basın");
        Console.ReadLine();
        }
    }
}

programı yazdıktan sonra test etmek için açtım, dosya oluşturma bölümüne geldim, "Lütfen dosyanın tam yolunu yazınız ve Enter'a basınız, eğer dosyayı oluşturmak istiyorsanız 4 yazıp Enter'a basınız." ksımında dosya yolunu yazıp enter'a basınca "if (Convert.ToInt32(dosyayolu)==4)" kısmında başlıktaki hatayı verdi. çözümü nedir? teşekkürler...

not: daha bu dili öğrenmeye başlayalı 3 gün oldu basit birşeyse olumsuz yorum (bunu mu yapamadın, bunu yapamadıysan bırak bu işi vb.) yapmayın lütfen.
 

ankarali_gnc"

Asistan
Katılım
30 Kasım 2011
Mesajlar
174
Reaksiyon puanı
0
Puanları
0
Int32 sayi tanımlamana gerek yok ayrıca StreamWriter ve StreamReader yapmıssında :) dosyayı nereye olusturacaksın? Stream tanımla önce bir dostum Stream= Artık dosya yolun nerde ise parantez icinde(c:\\deneme\deneme.txt) dite birsey tanımlaki tanımladıgın Stream degişkenını StreamReader'a yada Writer'a eşitle :) yazacak bir dosya yok yani
 

Janmark

Doçent
Katılım
22 Temmuz 2011
Mesajlar
915
Reaksiyon puanı
2
Puanları
38
Sorundan alakasız olarak gereksiz tip dönüşümleri yapmışsın "
dosya = Convert.ToString(Console.ReadLine());" gibi mesela zaten console ekranına gönderdiğin/aldığın herşey string olmak sorunda string'i bir daha string'e Convert etmene gerek yok, birde çok fazla goto kullanmışsın. Goto pek fazla tercih edilmeyen bir yöntemdir. Onun yerine Class ve içinde Method'ları kullanırsan çok daha iyi olur hemde OOP programlamıya geçerken zorlanmazsında :)
[MENTION=267425]Samed Tarık[/MENTION]
 

nobody946

Doçent
Katılım
4 Mayıs 2012
Mesajlar
508
Reaksiyon puanı
2
Puanları
18
ankarali_gnc";2360071 dedi ki:
Int32 sayi tanımlamana gerek yok ayrıca StreamWriter ve StreamReader yapmıssında :) dosyayı nereye olusturacaksın? Stream tanımla önce bir dostum Stream= Artık dosya yolun nerde ise parantez icinde(c:\\deneme\deneme.txt) dite birsey tanımlaki tanımladıgın Stream degişkenını StreamReader'a yada Writer'a eşitle :) yazacak bir dosya yok yani

yolu ve ismi kullanıcının girdiklerine göre atıyor. o prantez içine kullanıcının gireceği yolu string olarak atadım.

Sorundan alakasız olarak gereksiz tip dönüşümleri yapmışsın "
dosya = Convert.ToString(Console.ReadLine());" gibi mesela zaten console ekranına gönderdiğin/aldığın herşey string olmak sorunda string'i bir daha string'e Convert etmene gerek yok, birde çok fazla goto kullanmışsın. Goto pek fazla tercih edilmeyen bir yöntemdir. Onun yerine Class ve içinde Method'ları kullanırsan çok daha iyi olur hemde OOP programlamıya geçerken zorlanmazsında :)
@Samed Tarık

class ve method kullanımını henüz çözemedim :) çözünce kullanamya başlarım.

edit: çözümü buldum. if içinde stringi int32 ye çevirmek yerine int32'yi stringe çevirince sorun çözüldü örneğin:
Kod:
if(Convert.ToInt32(dosyayolu)==2)
yerine
Kod:
 if(dosyayolu==Convert.ToString(2))
kullandım sorun çözüldü.

yalnız şimdide başka bir problemim var. dosyanın üstüne yazma işlemini eksik yapıyor, yani dosyanın içini siliyor fakat yazdıklarımı girmiyor, aytıca ben bir tane console.readline koyamama rağmen iki kere enter'a basmam gerekiyor. nasıl çözebiliriz? kodun son hali burda:

Kod:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Dosya Açmak İçin 1\nDosya Yazmak İçin 2\nDosya Oluşturmak İçin 3 yazıp Enter'a basın.");
            Int32 sayi;
            sayi = Convert.ToInt32(Console.ReadLine());
            if (sayi==1)
            {
                Console.WriteLine("Dosya açma işlemi yükleniyor...");
                goto dosyaacmaislemibasla;
            }
            else if (sayi==2)
            {
                Console.WriteLine("Dosya yazma işlemi yükleniyor...");
                goto dosyayazmaislemibasla;
            }
            else if (sayi==3)
            {
                Console.WriteLine("Dosya oluşturma işlemi yükleniyor...");
                goto dosyaolustumaislemibasla;
            }
    
            
    dosyaacmaislemibasla:
        Console.WriteLine("Lütfen dosyanın tam yolunu yazınız ve Enter'a basınız.");
        String dosya;
        dosya = Convert.ToString(Console.ReadLine());
        StreamReader ac;
        ac = File.OpenText(dosya);
        string yazi;
        yazi = ac.ReadLine();
        while (yazi != null)
        {
            Console.WriteLine("\n");
            Console.WriteLine(yazi);
            yazi = ac.ReadLine();
        }
        ac.Close();
            /*işlem bitti*/
        goto bitti;

    dosyayazmaislemibasla:
        Console.WriteLine("Lütfen dosyanın tam yolunu yazınız ve Enter'a basınız, eğer dosyayı oluşturmak istiyorsanız 4 yazıp Enter'a basınız.");

        string dosyayolu;
        dosyayolu = Console.ReadLine();

        if (dosyayolu==Convert.ToString(4))
        {
            goto dosyaolustumaislemibasla;
        }
        else
        {
            Console.WriteLine("Dosya adı.uzantısı şeklinde giriniz. (örneğin: ali.txt)");
            string uzanti;
            uzanti = Convert.ToString(Console.ReadLine());
            
            Console.WriteLine("Dosyanın üstüne yazmak istiyorsanız 1, altına eklemek istiyorsanız 2 ye basıp Enter'a basın.");
         Int32 girilen;
         girilen = Convert.ToInt32(Console.ReadLine());
         if (girilen==1)
         {
             StreamWriter dosya2 = new StreamWriter(dosyayolu+uzanti);
         
         satirgir:
             Console.WriteLine("Lütfen satırı giriniz ve Enter'a basınız.\n");
             dosya2.WriteLine(Console.ReadLine());
             Console.WriteLine("Yeni satır girmek için 1, Dosyadan çıkmak için 2 yazıp Enter'a basınız.");
             if (Convert.ToInt32(Console.ReadLine()) == 1)
             {
                 goto satirgir;
             }
             else if (Console.ReadLine() == Convert.ToString(2))
             {
                 dosya2.Close();
             }
         }
         else if (girilen==2)
         {
             StreamWriter dosya3;
             dosya3 = File.AppendText(dosyayolu + uzanti);
         
         satirgir2:
             Console.WriteLine("Lütfen satırı giriniz ve Enter'a basınız.\n");
             dosya3.WriteLine(Console.ReadLine());
             Console.WriteLine("Yeni satır girmek için 1, Dosyadan çıkmak için 2 yazıp Enter'a basınız.");
             String girilensayi;
             girilensayi=Console.ReadLine();
             if (girilensayi == Convert.ToString(1))
             {
                 goto satirgir2;
             }
             else if (girilensayi == Convert.ToString(2))
             {
                 dosya3.Close();
             }
         }
        }
        goto bitti;

    dosyaolustumaislemibasla:
        Console.WriteLine("\nLütfen dosya adını giriniz.");
        string dosyaadi;
        dosyaadi=Console.ReadLine();

        Console.WriteLine("\nLütfen dosya uzantısını giriniz.");
        string dosyauzantisi;
        dosyauzantisi=Console.ReadLine();
        
        Console.WriteLine("\nLütfen dosyanın oluşturulacağı tam yolu giriniz. (örneğin C:\\klasör1 )");
        string dosyayolu2;
        dosyayolu2 =Console.ReadLine();

        Console.WriteLine("\n\nDosyayı oluşturmak için Enter'a basın");
        Console.ReadLine();

        File.Create(dosyayolu2 + dosyaadi + dosyauzantisi);

        Console.WriteLine("\nDosya oluşturuldu.");

        goto bitti;

    bitti:
        Console.WriteLine("\n\nİşlem tamamlandı. Çıkmak için Enter'a basın");
        Console.ReadLine();
        }
    }
}
 

aslanpayi

Doçent
Katılım
12 Ağustos 2009
Mesajlar
523
Reaksiyon puanı
1
Puanları
0
Öncelikle şunu söylemek isterim, bu dili öğrenmek istemen hoş bir şey (Sebebi her ne olursa olsun). Kimsenin de kimseye "Daha onu mu yapamadın? Daha bunu da mı yapamıyorsun ne işe yararsın sen?" gibi tavırlar takınma lüksü yok buralarda. Kimisi bir şeyler öğrenmeye, kimisi bildiklerini paylaşmaya gelir buralara. Olumlu ve olumsuz eleştirileri al bir kenara koy ve kendi bildiklerinin üstüne katmaya çalış her zaman. Boş beleş lafları da kulak ardı edersin olur biter. Zaten kişiyi engelleyince o boş beleş lafları bir daha hiç görmüyorsun :D

Diğer taraftan 3 gündür program yazmana bakacak olursak bu mantıkta yazılması doğal. Ben de düzeltirken (anlayabilmen açısından) kod yapını çok fazla bozmamaya çalıştım. Ama tabi birkaç ay sonra dönüp bu kodlara baktığında da gereksiz kod kalabalıklarını ve mantık hatalarına güleceksin. Gereksiz veya yanlış gördüğüm kodlarını bir kenara çektim ve hemen altlarına ufak düzeltmelerde bulundum. Gördüğün gibi StreamWriter metodunu kullanırken bool bir değişken ile kolayca üstüne yazma ve altına ekleme işlemini uygulayabiliyorsun. Ayrıca Oluşturduktan sonra mutlaka kapatman gereken bazı kod yapıları vardır. Bunları da "using" ile sınırladığın takdirde açtığın kodu tekrar kapatman gerekmez, çizdiğin sınır bittiğinde yazdığın kod da sona erer.

Değişiklikleri sadece "dosyayazmaislemibasla:" için yaptım. Gerisini kendin de şekillendirebilirsin.

Kod:
        static void Main(string[] args)
        {
            Console.WriteLine("Dosya Açmak İçin 1\nDosya Yazmak İçin 2\nDosya Oluşturmak İçin 3 yazıp Enter'a basın.");
            Int32 sayi;
            sayi = Convert.ToInt32(Console.ReadLine());
            if (sayi == 1)
            {
                Console.WriteLine("Dosya açma işlemi yükleniyor...");
                goto dosyaacmaislemibasla;
            }
            else if (sayi == 2)
            {
                Console.WriteLine("Dosya yazma işlemi yükleniyor...");
                goto dosyayazmaislemibasla;
            }
            else if (sayi == 3)
            {
                Console.WriteLine("Dosya oluşturma işlemi yükleniyor...");
                goto dosyaolustumaislemibasla;
            }




        dosyaacmaislemibasla:
            Console.WriteLine("Lütfen dosyanın tam yolunu yazınız ve Enter'a basınız.");
            String dosya;
            dosya = Convert.ToString(Console.ReadLine());
            StreamReader ac;
            ac = File.OpenText(dosya);
            string yazi;
            yazi = ac.ReadLine();
            while (yazi != null)
            {
                Console.WriteLine("\n");
                Console.WriteLine(yazi);
                yazi = ac.ReadLine();
            }
            ac.Close();
            /*işlem bitti*/
            goto bitti;


        dosyayazmaislemibasla:
            Console.WriteLine(@"Lütfen dosyanın tam yolunu yazınız (C:\_deneme.txt) ve Enter'a basınız, eğer dosyayı oluşturmak istiyorsanız 4 yazıp Enter'a basınız.");


            string dosyayolu;
            dosyayolu = Console.ReadLine();


            if (dosyayolu == Convert.ToString(4))
            {
                goto dosyaolustumaislemibasla;
            }
            else
            {
                            //Console.WriteLine("Dosya adı.uzantısı şeklinde giriniz. (örneğin: ali.txt)");
                            //string uzanti;
                            //uzanti = Convert.ToString(Console.ReadLine());


                Console.WriteLine("Dosyanın üstüne yazmak istiyorsanız 1, altına eklemek istiyorsanız 2 ye basıp Enter'a basın.");
                Int32 girilen;
                girilen = Convert.ToInt32(Console.ReadLine());
                bool ustuneYaz = false;


                if (girilen == 1)
                {
                    ustuneYaz = true;
                            //    StreamWriter dosya2 = new StreamWriter((dosyayolu + uzanti),true);


                            //satirgir:
                            //    Console.WriteLine("Lütfen satırı giriniz ve Enter'a basınız.\n");
                            //    dosya2.WriteLine(Console.ReadLine());
                            //    Console.WriteLine("Yeni satır girmek için 1, Dosyadan çıkmak için 2 yazıp Enter'a basınız.");
                            //    if (Convert.ToInt32(Console.ReadLine()) == 1)
                            //    {
                            //        goto satirgir;
                            //    }
                            //    else if (Console.ReadLine() == Convert.ToString(2))
                            //    {
                            //        dosya2.Close();
                            //    }
                }
                            //else if (girilen == 2)
                            //{
                            //    StreamWriter dosya3;
                            //    dosya3 = File.AppendText(dosyayolu + uzanti);


                            //satirgir2:
                            //    Console.WriteLine("Lütfen satırı giriniz ve Enter'a basınız.\n");
                            //    dosya3.WriteLine(Console.ReadLine());
                            //    Console.WriteLine("Yeni satır girmek için 1, Dosyadan çıkmak için 2 yazıp Enter'a basınız.");
                            //    String girilensayi;
                            //    girilensayi = Console.ReadLine();
                            //    if (girilensayi == Convert.ToString(1))
                            //    {
                            //        goto satirgir2;
                            //    }
                            //    else if (girilensayi == Convert.ToString(2))
                            //    {
                            //        dosya3.Close();
                            //    }
                            //}
                


                using (StreamWriter dosya2=new StreamWriter(dosyayolu,ustuneYaz))
                {
                    satirgir:
                    Console.WriteLine("Lütfen satırı giriniz ve Enter'a basınız.\n");
                    dosya2.WriteLine(Console.ReadLine());
                    Console.WriteLine("Yeni satır girmek için 1, Dosyadan çıkmak için 2 yazıp Enter'a basınız.");
                    if (Convert.ToInt32(Console.ReadLine()) == 1)
                    {
                        goto satirgir;
                    }
                }
            }
            goto bitti;


        dosyaolustumaislemibasla:
            Console.WriteLine("\nLütfen dosya adını giriniz.");
            string dosyaadi;
            dosyaadi = Console.ReadLine();


            Console.WriteLine("\nLütfen dosya uzantısını giriniz.");
            string dosyauzantisi;
            dosyauzantisi = Console.ReadLine();


            Console.WriteLine("\nLütfen dosyanın oluşturulacağı tam yolu giriniz. (örneğin C:\\klasör1 )");
            string dosyayolu2;
            dosyayolu2 = Console.ReadLine();


            Console.WriteLine("\n\nDosyayı oluşturmak için Enter'a basın");
            Console.ReadLine();


            File.Create(dosyayolu2 + dosyaadi + dosyauzantisi);


            Console.WriteLine("\nDosya oluşturuldu.");


            goto bitti;


        bitti:
            Console.WriteLine("\n\nİşlem tamamlandı. Çıkmak için Enter'a basın");
            Console.ReadLine();




        }
 

nobody946

Doçent
Katılım
4 Mayıs 2012
Mesajlar
508
Reaksiyon puanı
2
Puanları
18
Öncelikle şunu söylemek isterim, bu dili öğrenmek istemen hoş bir şey (Sebebi her ne olursa olsun). Kimsenin de kimseye "Daha onu mu yapamadın? Daha bunu da mı yapamıyorsun ne işe yararsın sen?" gibi tavırlar takınma lüksü yok buralarda. Kimisi bir şeyler öğrenmeye, kimisi bildiklerini paylaşmaya gelir buralara. Olumlu ve olumsuz eleştirileri al bir kenara koy ve kendi bildiklerinin üstüne katmaya çalış her zaman. Boş beleş lafları da kulak ardı edersin olur biter. Zaten kişiyi engelleyince o boş beleş lafları bir daha hiç görmüyorsun :D

Diğer taraftan 3 gündür program yazmana bakacak olursak bu mantıkta yazılması doğal. Ben de düzeltirken (anlayabilmen açısından) kod yapını çok fazla bozmamaya çalıştım. Ama tabi birkaç ay sonra dönüp bu kodlara baktığında da gereksiz kod kalabalıklarını ve mantık hatalarına güleceksin. Gereksiz veya yanlış gördüğüm kodlarını bir kenara çektim ve hemen altlarına ufak düzeltmelerde bulundum. Gördüğün gibi StreamWriter metodunu kullanırken bool bir değişken ile kolayca üstüne yazma ve altına ekleme işlemini uygulayabiliyorsun. Ayrıca Oluşturduktan sonra mutlaka kapatman gereken bazı kod yapıları vardır. Bunları da "using" ile sınırladığın takdirde açtığın kodu tekrar kapatman gerekmez, çizdiğin sınır bittiğinde yazdığın kod da sona erer.

Değişiklikleri sadece "dosyayazmaislemibasla:" için yaptım. Gerisini kendin de şekillendirebilirsin.

Kod:
        static void Main(string[] args)
        {
            Console.WriteLine("Dosya Açmak İçin 1\nDosya Yazmak İçin 2\nDosya Oluşturmak İçin 3 yazıp Enter'a basın.");
            Int32 sayi;
            sayi = Convert.ToInt32(Console.ReadLine());
            if (sayi == 1)
            {
                Console.WriteLine("Dosya açma işlemi yükleniyor...");
                goto dosyaacmaislemibasla;
            }
            else if (sayi == 2)
            {
                Console.WriteLine("Dosya yazma işlemi yükleniyor...");
                goto dosyayazmaislemibasla;
            }
            else if (sayi == 3)
            {
                Console.WriteLine("Dosya oluşturma işlemi yükleniyor...");
                goto dosyaolustumaislemibasla;
            }




        dosyaacmaislemibasla:
            Console.WriteLine("Lütfen dosyanın tam yolunu yazınız ve Enter'a basınız.");
            String dosya;
            dosya = Convert.ToString(Console.ReadLine());
            StreamReader ac;
            ac = File.OpenText(dosya);
            string yazi;
            yazi = ac.ReadLine();
            while (yazi != null)
            {
                Console.WriteLine("\n");
                Console.WriteLine(yazi);
                yazi = ac.ReadLine();
            }
            ac.Close();
            /*işlem bitti*/
            goto bitti;


        dosyayazmaislemibasla:
            Console.WriteLine(@"Lütfen dosyanın tam yolunu yazınız  (C:\_deneme.txt) ve Enter'a basınız, eğer dosyayı oluşturmak  istiyorsanız 4 yazıp Enter'a basınız.");


            string dosyayolu;
            dosyayolu = Console.ReadLine();


            if (dosyayolu == Convert.ToString(4))
            {
                goto dosyaolustumaislemibasla;
            }
            else
            {
                            //Console.WriteLine("Dosya adı.uzantısı şeklinde giriniz. (örneğin: ali.txt)");
                            //string uzanti;
                            //uzanti = Convert.ToString(Console.ReadLine());


                Console.WriteLine("Dosyanın üstüne yazmak istiyorsanız  1, altına eklemek istiyorsanız 2 ye basıp Enter'a basın.");
                Int32 girilen;
                girilen = Convert.ToInt32(Console.ReadLine());
                bool ustuneYaz = false;


                if (girilen == 1)
                {
                    ustuneYaz = true;
                            //    StreamWriter dosya2 = new StreamWriter((dosyayolu + uzanti),true);


                            //satirgir:
                            //    Console.WriteLine("Lütfen satırı giriniz ve Enter'a basınız.\n");
                            //    dosya2.WriteLine(Console.ReadLine());
                            //    Console.WriteLine("Yeni satır girmek için 1, Dosyadan çıkmak için 2 yazıp Enter'a basınız.");
                            //    if (Convert.ToInt32(Console.ReadLine()) == 1)
                            //    {
                            //        goto satirgir;
                            //    }
                            //    else if (Console.ReadLine() == Convert.ToString(2))
                            //    {
                            //        dosya2.Close();
                            //    }
                }
                            //else if (girilen == 2)
                            //{
                            //    StreamWriter dosya3;
                            //    dosya3 = File.AppendText(dosyayolu + uzanti);


                            //satirgir2:
                            //    Console.WriteLine("Lütfen satırı giriniz ve Enter'a basınız.\n");
                            //    dosya3.WriteLine(Console.ReadLine());
                            //    Console.WriteLine("Yeni satır girmek için 1, Dosyadan çıkmak için 2 yazıp Enter'a basınız.");
                            //    String girilensayi;
                            //    girilensayi = Console.ReadLine();
                            //    if (girilensayi == Convert.ToString(1))
                            //    {
                            //        goto satirgir2;
                            //    }
                            //    else if (girilensayi == Convert.ToString(2))
                            //    {
                            //        dosya3.Close();
                            //    }
                            //}
                


                using (StreamWriter dosya2=new StreamWriter(dosyayolu,ustuneYaz))
                {
                    satirgir:
                    Console.WriteLine("Lütfen satırı giriniz ve Enter'a basınız.\n");
                    dosya2.WriteLine(Console.ReadLine());
                    Console.WriteLine("Yeni satır girmek için 1, Dosyadan çıkmak için 2 yazıp Enter'a basınız.");
                    if (Convert.ToInt32(Console.ReadLine()) == 1)
                    {
                        goto satirgir;
                    }
                }
            }
            goto bitti;


        dosyaolustumaislemibasla:
            Console.WriteLine("\nLütfen dosya adını giriniz.");
            string dosyaadi;
            dosyaadi = Console.ReadLine();


            Console.WriteLine("\nLütfen dosya uzantısını giriniz.");
            string dosyauzantisi;
            dosyauzantisi = Console.ReadLine();


            Console.WriteLine("\nLütfen dosyanın oluşturulacağı tam yolu giriniz. (örneğin C:\\klasör1 )");
            string dosyayolu2;
            dosyayolu2 = Console.ReadLine();


            Console.WriteLine("\n\nDosyayı oluşturmak için Enter'a basın");
            Console.ReadLine();


            File.Create(dosyayolu2 + dosyaadi + dosyauzantisi);


            Console.WriteLine("\nDosya oluşturuldu.");


            goto bitti;


        bitti:
            Console.WriteLine("\n\nİşlem tamamlandı. Çıkmak için Enter'a basın");
            Console.ReadLine();




        }


hmm bayağı kısaltmışsın gerçekten :) inceledim ama append modunu göremedim kodda onu nasıl yaptın?
 

aslanpayi

Doçent
Katılım
12 Ağustos 2009
Mesajlar
523
Reaksiyon puanı
1
Puanları
0
Kod:
              Console.WriteLine("Dosyanın üstüne yazmak istiyorsanız  1, altına eklemek istiyorsanız 2 ye basıp Enter'a basın.");
                Int32 girilen;

                girilen = Convert.ToInt32(Console.ReadLine());

                bool ustuneYaz = false;

                if (girilen == 1)
                {
                    ustuneYaz = true;
                }       
                using (StreamWriter dosya2=new StreamWriter(dosyayolu,ustuneYaz))
                {
                    satirgir:
                    Console.WriteLine("Lütfen satırı giriniz ve Enter'a basınız.\n");
                    dosya2.WriteLine(Console.ReadLine());
                    Console.WriteLine("Yeni satır girmek için 1, Dosyadan çıkmak için 2 yazıp Enter'a basınız.");
                    if (Convert.ToInt32(Console.ReadLine()) == 1)
                    {
                        goto satirgir;
                    }
                }


Kodun bu kısmını inceleyecek olursak;

"StreamWriter" metodunu oluştururken parantezi açtığında tooltip şeklinde sarı bir altyazı alanı çıkar. Oluşturduğun metodu oluştururken ne tür değişkenler vermen gerektiği burada yazıyor. Mesela "StreamWriter" metodu 7 farklı şekilde oluşturulabiliyor. Ben 4. olanı kullandım. Yani "new StreamWriter(string path,bool append)" gördüğün gibi oluşturduğum "bool ustuneYaz" değişkenini "bool append" kısmına yazdığımda "true" değer döndürürse dosyanın altına ekler, "false" değer döndürürse üstüne yazar. Bu bahsettiğim kod bloğu sınırları belli bir kod bloğu olduğundan dolayı da rahatça "using" kullanarak gereksiz yere "dosya2.Flush();" ve "dosya2.Close();" kullanmamış olduk. Zamanında bunları yazmayı unuttuğum için bir türlü dosyaya yazılanları göremiyordum. İşte "using" bunu unutanlar için birebir.

Console tarafı mantığı anlaman için ilk başta cazip gelebilir ama o kısmı hızlıca terk etmeni tavsiye ediyorum. Form tarafına geçmeye başlasan iyi olur. Asıl işine yarayacak kısımlar oralar zaten.

Metodlar ile ilgili faydalı bir makale. Yakın zamanda çok işine yarayacaktır.
 

nobody946

Doçent
Katılım
4 Mayıs 2012
Mesajlar
508
Reaksiyon puanı
2
Puanları
18
anladım teşekkürler, formlara visual basic kullanırken alıştım, yani genel olarak hakimim, c#'ın çalışma sistemini anlamak için böyle bir şey yapmaya karar verdim.
 

aslanpayi

Doçent
Katılım
12 Ağustos 2009
Mesajlar
523
Reaksiyon puanı
1
Puanları
0
C# ilk başta garip gelebilir ama alıştığında vazgeçemeyeceğini söyleyebilirim. Visual Basicten daha kolay kodlanır.
 

Champion78

Profesör
Katılım
29 Eylül 2006
Mesajlar
1,716
Reaksiyon puanı
43
Puanları
48
Kodla çok alakalı olmayacak söyleyeceğim şey; ancak önemli bir tavsiye: goto yapısını asla kullanma :) nasıl alışırsan öyle gider derler ya, o yüzden alışma. öğren fonksiyon, metod nasıl yazılıyor onları kullan. programda goto kullanmak pek iyi bir şey değil, aklında bulunsun :)
 

Janmark

Doçent
Katılım
22 Temmuz 2011
Mesajlar
915
Reaksiyon puanı
2
Puanları
38
Sorundan alakasız olarak gereksiz tip dönüşümleri yapmışsın "
dosya = Convert.ToString(Console.ReadLine());" gibi mesela zaten console ekranına gönderdiğin/aldığın herşey string olmak sorunda string'i bir daha string'e Convert etmene gerek yok, birde çok fazla goto kullanmışsın. Goto pek fazla tercih edilmeyen bir yöntemdir. Onun yerine Class ve içinde Method'ları kullanırsan çok daha iyi olur hemde OOP programlamıya geçerken zorlanmazsında :)
@Samed Tarık

Aynı şeyleri bende söylemişim zaten tekrar tekrar yazmaya gerek yok ;) :) [MENTION=8184]Champion78[/MENTION]
 
Üst