C# ile bilgisayarınızdaki diskleri listelemek

.Net 2.0 ile birlikte System.IO namespace’inde bulunan birçok eksiklik giderilmiştir. Özellikle Windows’un Dosya Sistemine erişmek için yeni sınıflar ve methodlar eklenmiştir.

DriveInfo sınıfında yapılan bir geliştirme sayesinde sistemde kurulu disklere erişebilir, disklerin tiplerini sorgulayabilir, kapasitelerini ve boş alan miktarını öğrenebiliriz.

Örneğin, sistemdeki diskleri listelemek için;

DriveInfo[] diskler = DriveInfo.GetDrives(); foreach (DriveInfo disk in diskler) { string diskAdi = disk.IsReady ? String.Format(“ - {0}”, disk.VolumeLabel) : null; Console.WriteLine( “{0} - {1}{2}”, disk.Name, disk.DriveType, diskAdi); }

C:\ – Fixed – Sistem D:\ – Fixed – Dosyalar E:\ – CDRom F:\ – CDRom G:\ – Removable H:\ – Removable T:\ – Fixed – Temp Y:\ – Fixed – Yedekler

IsReady property’si sayesinde disk’in o anda sistemde kullanılabilir olup olmadığını kontrol ediyoruz. Örneğin, içinde CD olmayan CD okuyucu için, disk’in etiketini almaya çalışmıyoruz. Uygulamamızın hata ile karşılaşmaması için, bu dikkat etmemiz gereken bir nokta.

Name ve DriveType özellikleri, diskin hazır olduğu durumlardan bağımsız olarak, her zaman kullanılabilir durumdadır.

Euler - 2

Euler serisinin ikinci yazısında, Project Euler’in 2. sorusunu çözeceğiz;

*Orijinal soru; *Each new term in the Fibonacci sequence is generated by adding the previous two terms. By starting with 1 and 2, the first 10 terms will be:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …

Find the sum of all the even-valued terms in the sequence which do not exceed four million.

*Türkçesi; *Fibonacci serisinde her rakam, kendisinden önce gelen iki rakamın toplamıdır. 1 ve 2 ile başlayan serinin ilk 10 rakamı:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …

Bu serinin 4.000.000 (Dört Milyon) ‘dan küçük tüm çift rakamlarının toplamını bulunuz.

Önce siz çözmeyi deneyin, çözemezseniz ;

using System; using System.Linq; using System.Collections.Generic;

class Program { static IEnumerable< long > FibonacciSeri() { long a = 1; long b = 1;

    while (true)
    {
        a = a + b;
        b = a - b;

        if (b < 4000000)
            yield return b;
        else
            break;
    }
}

static void Main(string[] args)
{
    long Toplam = FibonacciSeri().Where(Rakam => Rakam % 2 == 0).Sum();

    Console.WriteLine("Toplam : {0}", Toplam);

    Console.ReadLine();
} }

C# Textbox'ın AutoComplete Özelliği

Genellikle web uygulamalarında gördüğümüz metin kutularının otomatik tamamlama özelliğini Windows Masaüstü uygulamalarımıza da ekleyebiliriz.

Yapmamız gereken, otomatik tamamlama özelliği vermek istediğimiz Textbox‘ın birkaç özelliğini ayarlamak;

AutoCompleteMode : Varsayılan olarak None değerini içerir Append, yazılan harflere uyan ilk kelimenin kalanını textbox’a ekler ve seçili hale getirir Suggest, aşağı açılan listeyi gösterir SuggestAppend, hem aşağı açılan listeyi gösterir, hem de yazılan harflere uyan ilk kelimenin kalanını textbox’a ekler ve seçili hale getirir

AutoCompleteSource : Varsayılan olarak None değerini içerir FileSystem, FileSystemDirectories, HistoryList, RecentlyUsedList, AllSystemSources, AllUrl, CustomSource değerlerinden birini içerebilir

AutoCompleteCustomSource : AutoCompleteSource özelliği CustomSource olarak atanmışsa AutoCompleteCustomSource özelliği string dizisi olarak listeyi tutar

Önce aşağıdaki ekran görüntüsünde form oluşturalım;

TextBox AutoCompleteMode Form

Öncelikle formumuzun yüklenme olayında (Form_Load Event) Kaynak açılır listesine (ComboBox), otomatik tamamlama kaynaklarının listesini ekleyelim;

cmbKaynak.Items.Add(AutoCompleteSource.CustomSource); cmbKaynak.Items.Add(AutoCompleteSource.FileSystem); cmbKaynak.Items.Add(AutoCompleteSource.FileSystemDirectories); cmbKaynak.Items.Add(AutoCompleteSource.HistoryList); cmbKaynak.Items.Add(AutoCompleteSource.RecentlyUsedList); cmbKaynak.Items.Add(AutoCompleteSource.AllSystemSources); cmbKaynak.Items.Add(AutoCompleteSource.AllUrl);</pre>

TextBox AutoCompleteSource List

Daha sonra, TextBox‘ın AutoCompleteMode ve AutoCompleteCustomSource özelliklerine değer atamaları yapalım;

txtWebSitesi.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
txtWebSitesi.AutoCompleteCustomSource.AddRange(new string[] { "http://www.enginpolat.com", "http://www.karalamalar.net", "http://www.cebirci.com", "http://www.kadirgunay.com" });
cmbKaynak.SelectedIndex = 0;

Son olarak, Kaynak combobox‘ının seçili eleman değişti olayında (SelectedIndexChanged Event) textbox‘ın AutoCompleteSource özelliğini değiştiriyoruz;

txtWebSitesi.AutoCompleteSource = (AutoCompleteSource)cmbKaynak.SelectedItem;

TextBox AutoCompleteCustomSource

TextBox AutoCompleteSource FileSystem

TextBox AutoCompleteSource History List

Örnek uygulamanın tüm kaynak kodu;

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;

public partial class frmMain : Form
{
    public frmMain()
    {
        InitializeComponent();
    }

    private void frmMain_Load(object sender, EventArgs e)
    {
        cmbKaynak.Items.Add(AutoCompleteSource.CustomSource);
        cmbKaynak.Items.Add(AutoCompleteSource.FileSystem);
        cmbKaynak.Items.Add(AutoCompleteSource.FileSystemDirectories);
        cmbKaynak.Items.Add(AutoCompleteSource.HistoryList);
        cmbKaynak.Items.Add(AutoCompleteSource.RecentlyUsedList);
        cmbKaynak.Items.Add(AutoCompleteSource.AllSystemSources);
        cmbKaynak.Items.Add(AutoCompleteSource.AllUrl);

        txtWebSitesi.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
        txtWebSitesi.AutoCompleteCustomSource.AddRange(new string[] { "http://www.enginpolat.com", "http://www.durgut.com", "http://www.karalamalar.net", "http://www.kadirgunay.com", "http://www.microsoft.com", "http://www.bilgeadam.com", "http://www.ntvmsnbc.com", "http://www.arcelik.com" });

        cmbKaynak.SelectedIndex = 0;
    }

    private void cmbKaynak_SelectedIndexChanged(object sender, EventArgs e)
    {
        txtWebSitesi.AutoCompleteSource = (AutoCompleteSource)cmbKaynak.SelectedItem;
    }

    private void lblenginpolatcom_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
    {
        Process.Start("http://www.enginpolat.com");
    }
}


Euler - 1

Euler serisinin ilk yazısında, Project Euler’in 1. sorusunu çözeceğiz;

*Orijinal soru; *If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23. Find the sum of all the multiples of 3 or 5 below 1000.

*Türkçesi; *3′ün veya 5′in katı olan 10′dan küçük tüm doğal sayıları listelersek, 3, 5, 6, ve 9′u elde ederiz. Bu katların toplamı 23′tür. 3′ün veya 5′in 1000′den küçük tüm katlarının toplamını bulunuz.

Önce siz çözmeyi deneyin, çözemezseniz ;

using System; using System.Linq; using System.Collections.Generic;

class Program { static void Main(string[] args) { ///Yöntem (1) ///IEnumerable< int > Rakamlar = Enumerable.Range(1, 999); ///int Toplam = (from Rakam in Rakamlar where Rakam % 3 == 0 || Rakam % 5 == 0 select Rakam).Sum();

    ///Yöntem (2)
    int Toplam = Enumerable.Range(1, 999).Where(r => r % 3 == 0 || r % 5 == 0).Sum();

    Console.WriteLine("Toplam : {0}", Toplam);

    Console.ReadLine();
} }

Yeni Seri - Euler

cebirci arkadaşım sayesinde yeni bir seri yazmaya başlıyorum; Euler.

http://www.projecteuler.net adresinde sorularına ulaşabileceğiniz Project Euler, matematiğine güvenen programcılara hitap ediyor.

Project Euler, basit olarak sizi, şu ana kadar tanımlanmış ve kolaydan zora göre numaralandırılmış 299 matematik sorusunu çözmeye davet ediyor.

Fakat, soruları istediğiniz programlama dili ile yazacağınız uygulamalara çözdürmeniz lazım.

Ben soruları C# programlama dilini kullanarak çözmeye çalışacağım.

Engin Polat hakkında

Senior Software Engineer, @Microsoft

Ada ve Ege'nin babası ;)

Kategoriler

İstatistik

Makale Adedi: 484

Creative Commons Lisansı