İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Programlama
  4. Programlama Dilleri
Programlama Dilleri

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

nobody94613.07.201210 cevap15.917 görüntüleme
2012'den beri507 mesaj
#1
Beyler C# ile dosya işlemleri üzerine bir konsol uygulaması yazmaya çalıştım kodları burda:
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.
Cevaplar
2011'den beri174 mesaj
#2
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
2011'den beri914 mesaj
#3
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
nobody946 Konuyu açan
2012'den beri507 mesaj
#4
ankarali_gnc";2360071]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[/QUOTE]

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.

[quote="Janmark, post: 2360083"][COLOR=#333333] Sorundan alakasız olarak gereksiz tip dönüşümleri yapmışsın "[/COLOR dedi:
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:

if(Convert.ToInt32(dosyayolu)==2)
yerine
 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:

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();
        }
    }
}

2009'den beri523 mesaj
#5
Ö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.

        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 Konuyu açan
2012'den beri507 mesaj
#6
aslanpayi dedi: ↑
Ö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.

        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?
2009'den beri523 mesaj
#7


              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 Konuyu açan
2012'den beri507 mesaj
#8
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.
2009'den beri523 mesaj
#9
C# ilk başta garip gelebilir ama alıştığında vazgeçemeyeceğini söyleyebilirim. Visual Basicten daha kolay kodlanır.
2006'den beri1.716 mesaj
#10
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 :)
2011'den beri914 mesaj
#11
Janmark dedi: ↑
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 ;) :) Champion78

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.