c# MetinBelgesine veri kayıt etme

Başlatan Extreme, 27 Şubat 2013, 22:00:18

Extreme

Merhabalar,

1.İstediğim şey tam olarak...

text boxa benim yazdığım kelime ile isimli dosya oluşacak..

Ben 1.butona bastığımda kayıt başlasın alt alta reel time saat saymaya başlasın ve ben buton2ye basana kadar devam etsin.

Ben 2.butona bastığımda kayıt dursun kayıt edip dosyayı kapatsın istiyorum.






2.Şu an bulunduğum aşama

ayrı ayrı işlemleri yapabiliyorum

hedef algılattırırırsam tek bir saat kayıt edip bırakıyor .. çünkü üzerine kayıt ediyor..

saat kayıt ettirirsem de hedef algılattamıyorum programda yazdığım isime kayıt ediyor..

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        string hedef = "vars";
        int i = 0;
        int sayi = 0;
        int saat = DateTime.Now.Hour;
        int dakika = DateTime.Now.Minute;
        int saniye = DateTime.Now.Second;

        public Form1()
        {
            InitializeComponent();
        }
        

        

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            hedef = (textBox1.Text);
        }
        
        private void button1_Click_1(object sender, EventArgs e)
        {
            button1.Enabled = false;
            button2.Enabled = true;

            label1.Text = "Kayıt Başlatıldı";

            timer1.Start();
            sayi = 0;

           
            
        }

        private void button2_Click_1(object sender, EventArgs e)
        {
            dosya.Close();
            button1.Enabled = true;
            button2.Enabled = false;

            timer1.Stop();
            label1.Text = "Kayıt Durduruldu";
StreamReader dosya_ = new StreamReader("F:\\yeni\\asd.txt");

            dosya_.Close();
    }

         StreamWriter dosya = new StreamWriter("F:\\yeni\\asd.txt");

        private void timer1_Tick(object sender, EventArgs e)
        {
                saat = DateTime.Now.Hour;
                dakika = DateTime.Now.Minute;
                saniye = DateTime.Now.Second;

                dosya.Write(saat);
                dosya.Write(":");
                dosya.Write(dakika);
                dosya.Write(":");
                dosya.Write(saniye);
                dosya.WriteLine();



            
        }

       
        
        
        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void label2_Click(object sender, EventArgs e)
        {

        }

      
  }
}

fatih6761

Alıntı yapılan: Extreme - 27 Şubat 2013, 22:00:18
Merhabalar  visual c#da yeniyim bir uygulama yapmam gerekiyor ,bu dili öğrenicek pek vaktim yok

Yapmak istediğim şey: formda hazırlanmış butona tıklanınca Kayıt başlasın durma butonuna basınca kayıt dursun text dosyası kapatılsın.

Aşağıda program.cs de yazılmış kodları buldum ben bunun form.csde yazılmış ve ben form.csde butona tıklayınca kayıt etmesini istiyorum.

Sizden istediğim en azından püf noktalarını sölersiniz. yada böyle bir uygulama varsa link verirseniz sevinirim.

Program.cs kodlarını veriyorum
using System;
using System.IO;
using System.Text;

class TextFile
{
    public static void Main(string[] args)
    {
        // Metin dosyamıza birşeyler yazan fonksiyon..
        DosyayaYaz();

        // Metin dosyamızı okuyan ve ekrana yazan fonksiyon
        DosyadanOku("f:\\yeni\\Deneme.txt");

        // Metin dosyamızın sonuna birşeyler ekleyen fonksiyon
        DosyayaEkle("f:\\yeni\\Deneme.txt");

        Console.ReadLine();
    }

    static void DosyayaYaz()
    {
        //StreamWriter classından dosya isimli bir nesne oluşturalım
        StreamWriter dosya = new StreamWriter("f:\\yeni\\Deneme.txt");

        //Dosyamıza birinci satırı yazalım
        dosya.WriteLine("Metin dosyamızın ilk satırı");

        //Buda dosyamıza yazdığımız ikinci satır
        dosya.WriteLine("İkinci satır...");

        //Dosyamızın kapatılım..
        dosya.Close();

        //Yazma işlemini başarı ile tamamladığımızı kullanıcıya bildirelim..
        Console.WriteLine("Dosya yazımı Başarı ile tamamlandı...");

    }

    static void DosyadanOku(string dosyaIsmi)
    {
        // Text dosyasından okuyan StreamReader sınıfına ait bir 
        // dosyaOku nesnesini oluşturuyoruz
        StreamReader dosyaOku;

        // dosyadan okuyacağımız yazıyı string olarak depolamak için
        // yazı nesnemizi oluşturuyoruz.
        string yazi;

        //Dosyamızı okumak için açıyoruz..
        dosyaOku = File.OpenText(dosyaIsmi);

        //Dosyamızı okumak için açıyoruz ve ilk satırını okuyoruz..
        yazi = dosyaOku.ReadLine();

        /* okuduğumuz satırı ekrana bastırıp bir sonraki satıra geçiyoruz
       * Eğer sonraki satırda da yazı varsa onu da okuyup ekrana bastırıyoruz. 
       * Bu işlemleri dosyanın sonuna kadar devam ettiriyoruz.. */

        while (yazi != null)
        {
            Console.WriteLine(yazi);
            yazi = dosyaOku.ReadLine();
        }

        // dosyamızı kapatıyoruz..
        dosyaOku.Close();
    }

    static void DosyayaEkle(string dosyaIsmi)
    {
        //StreamWriter classından dosya isimli bir nesne oluşturalım
        StreamWriter dosya;

        // dosyamızın sonuna birşeyler eklememek için açıyoruz..
        dosya = File.AppendText(dosyaIsmi);

        // dosyanın sonuna birşey ekliyoruz..
        dosya.WriteLine("Bu da en son Append ile eklediğimiz satır...");

        // Dosyamızı kapatıyoruz..
        dosya.Close();

        Console.WriteLine("Dosyanın sonuna başarı ile ekledik...");
    }

}

İyi güzel de, kayıt başlasın, neyi kaydedeceğiz? Örnek verdiğiniz kod hazır fonksiyonlardan öteye birşey değil. Sadece dosya yazma okuam anlatılmış. Ama benim anladığım anlamda bir kayıt, log, günlük vs. yok.
Lütfen sorunuzu biraz daha açıklayın. Ayrıca, bu bir ödev mi? yoksa pratik mi? Ödev ise, size verilmiştir. Sadece yardım edebiliriz. Zorunluluk ise 5 dakikalık iş...

Extreme

İlk mesajı daha açık bir şekilde güncelledim.

semih

Çalışmana bir timer ve label ekle. Daha sonra button1_click() olayına timer1.enabled=true yaz.
Timer1'e ait tick fonksiyonuna aşağıdaki kodları yaz.
label1.text="Kayıt işlemi başlatildi";
            //StreamWriter classından dosya isimli bir nesne oluşturalım
            StreamWriter dosya = new StreamWriter("f:\\yeni\\asd.txt");

        //Dosyamıza birinci satırı yazalım
            dosya.WriteLine(deneme.ToString());

        //Buda dosyamıza yazdığımız ikinci satır
        dosya.WriteLine("İkinci satır...");


Buton2_click() fonksiyonuna ise timer1.enabled=false; komutunu ekle(ilk olarak bu komutu işlesin). Buton2 altındaki diğer fnksiyonlarda değişiklik yapma.

Extreme

İlk mesajım güncelldir..

semih

İşim vardı. Ama yine de yazıyım dedim hemen. Sorun okuyucu ve yazıyıcı tanımlarken ikisinin de ismini dosya olarak tanımlamandan kaynaklanıyor. Yazdığım kodları veriyorum. Çalışmasında hiç bir sıkıntı yok.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            timer1.Enabled = true;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            timer1.Enabled = false;
            label1.Text = "Kayıt Durduruldu";
            StreamReader dosya_ = new StreamReader("D:\\asd.txt");
            textBox1.Text = dosya_.ReadLine();
            dosya_.Close();

        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            label1.Text = "Kayıt Başlatıldı";
            StreamWriter dosya = new StreamWriter("D:\\asd.txt");
            dosya.WriteLine("Birinci satır.");
            dosya.Close();
        }
    }
}

Extreme

İlk mesajım güncelldir..

semih

Eğer butona basılı olduğu sürece kayıt yapılmasını istiyorsanız. Buton_click fonksiyonunu değil de butona ait mousedown fonksiyonunu kullanmalısınız. Buton1_click fonksiyonuna yazdığınız kodları buton1 mousedown fonksiyonuna ve buton2_click fonksiyonuna yazdığınız kodları ise bottun1 mouseup fonksiyonuna yazmanız gerekir. Böylece butona basılı tutulduğu sürece kayıt yapılacaktır. Butonu bıraktığınız anda ise timer devre dışı kalarak kayıt durur.

Extreme

İlk mesajım güncelldir..

semih

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            label1.Text = "Kayıt Başlatıldı";
            timer1.Enabled = true;  
        }
        private void button2_Click(object sender, EventArgs e)
        {
            dosya.Close();
            timer1.Enabled = false;
            label1.Text = "Kayıt Durduruldu";
            StreamReader dosya_ = new StreamReader("D:\\asd.txt");
            richTextBox1.Text = dosya_.ReadLine();
            dosya_.Close();
        }
        StreamWriter dosya = new StreamWriter("D:\\asd.txt");
        private void timer1_Tick(object sender, EventArgs e)
        {
             dosya.WriteLine("Birinci satır.");
             dosya.WriteLine("\n");    
        }

        private void button1_MouseDown(object sender, MouseEventArgs e)
        {

        }
    }
}



Extreme

İlk mesajım güncelldir..

semih

Alıntı yapılan: Extreme - 28 Şubat 2013, 19:36:26
Deniyip yazıcam en kısa zamanda.

richtextbox1 burada gerekli mi ?

Gerekli değil. textbox da kullanabilirsin. Kodlar çalışıyor. Kendim denedim. Kolay gelsin

Extreme

Textboxda gerekli deyil aslında bu iş için text box sizin dediğiniz gibi kullanınca
http://a1302.hizliresim.com/16/w/klws4.jpg
böyle bir durum çıkıyor o yüzden
richTextBox1.Text = dosya_.ReadLine(); bu ve benzeri kodları kaldırdım çünkü ben okuma istemiyorum...

------------------------------------------------------------------------------------

Verdiğiniz son kodlar son istediğim durumu karşılıyor ve kesinlikle çalışıyor

İlk mesajı güncelledim ...

Seckin ALAN

thread kullanımına baktınız mı ?
hedef yolu fileDialog ile halledebilirsiniz.  Alt satıra geçmek için \n karakterini kullanmanız gerekiyor.
Kar taneleri ne güzel anlatıyor, birbirlerine zarar vermeden de yol almanın mümkün olduğunu.. Mevlana

Extreme

Alıntı yapılan: Seçkin ALAN - 28 Şubat 2013, 21:52:01
thread kullanımına baktınız mı ?
hedef yolu fileDialog ile halledebilirsiniz.  Alt satıra geçmek için \n karakterini kullanmanız gerekiyor.

hedef yolu ve alt satıra geçmeyi ayrı ayrı hallediyorduk zaten şu an ikisi yanyana da oldu .. konu baya uzadığı için konunun tamamını okuyamadınız sanırım..

İlk mesajım güncelldir..