bildirgec.org

csharp hakkında tüm yazılar

c#’ta dosyayı veritabanı gibi kullanmak

karaib | 02 July 2011 11:04

Arkadaşlar, bu yazımda c# dilinde .txt dosyalarını veritabanı şeklinde kullanımını göreceğiz.
İlk olarak bilgilerimizi dosyaya belli bir düzende girmemmiz gerekiyor. Bilgilerimizi aralarına ‘#’ karakteri koyarak satır satır girelim. Örneğin aşağıdaki gibi;

1
2
3
1001#elma#3,56
1002#kiraz#2,45
1003#gofret#0,50

Daha sonraki işlemlerde bu dosyadaki bilgileri alacağız ve ‘#’ karakterine göre ayrıştıracağız. Şimdi bu ayrıştırma işlemini yapalım. Hatta bunu yapan bir fonksiyon oluşturalım.
Fonksiyonumuzun adı tara olsun.

BackgroundWoker ile arkaplan çalışması (Loading.. vs )

oGuZz Z | 01 May 2011 13:34

BackgroundWorker, programlamaya yeni başlayan çoğu programcının hatta uzun zamandır programlama ile uğraşmış kişilerin bile gözünden kaçabilen bu ufak nesne ne işe yarar ? çalışma mantığı nedir ? gibi bazı sorulara kendimce cevap vermeye çalışıcam ilk olarak adından da anlaşılacağı gibi bu nesne arkaplanda programın çalışmasını durdurmayacak şekilde bazı işlerin yapılmasını sağlar derleyiciler programı satır satır işlediklerinden bir işlem bitmeden diğerine geçiş yapılmaz buda işlem gerçekleşirken kullanıcının boş bir ekran görmesi veya işlem yapamadan beklemesi anlamına gelir ki buda bir çok kullanıcıyı sıkar. Örneğin internet üzerindeki bir serverdan tek tek verileri çekip ardından başka bir servera kayıt işlemi yapıyorsunuz.Bu işlem binlerce kayıt arasında saniyeler hatta dakikalarca bekletme yapar bu sırada kullanıcının bu işlemi iptal etme veya başla bir işlemden devam edebilme özgürlüğü sağlıyacak olan aracımız ise ” backgroundworker ” herneyse iyice uzatmayayım konuyu gelelim örnek kodlara …

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
backgroundWorker1.RunWorkerAsync();
// Yukarıdaki Kodu yazarak backgroundworker nesnemizi çalıştırıyoruz..
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
//Bu alana arka planda uygulamadan bağımsız çalışmasını istediğimiz kodları yazıyoruz...
}
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
// Bu alanda işlemin devamlılığı ile ilgili verileri progressbara gönderiyoruz örneğin serverdan gelen vernin nekadarının tamamlandığı..
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
//Bu alanda ise işlem tamamlandıktan sonra ne yapılacağı yazılacak örneğin yükleme bittikten sonra formu kapat veya kullanıcıya bir mesaj ver gibi seçenekler
}

Visual Studio Macro kullanarak projelerin versiyonlarini kontrol etmek

admin | 24 December 2010 09:08

Versiyonlar genellikle karşımıza update veya error reporting makenizmalarını oluştururken çıkmaktadır. Ne yazıkki Visual Studio’da bu işi otomatik yada belirli kurallar dahilinde otomatik hale getirmek için bir makenizma yok.

Bu yazıda bazı Visual Studio Projelerinde versiyonların nerden ayarlandığı, bazı versiyonlama tekniklerini ve versiyonların update için setup projelerinde nasıl kullanılacağı ile ilgili konulara değineceğim. En sonra ise kendi yazdığım, versiyon set etme Visual Studio Macro ‘sunu paylaşacağım.

Version ile ilgili bazı bilgiler:

C#’ ta Tek Yönlü Bağlı Liste İle Yığın Yapısı

admin | 06 December 2010 09:38

Merhaba, C#’ la ilgilenenler için bağlı listelerle ilgili güzel bir örnek. Bu kodda bağlı listelerle yığın yapısı oluşturacağım. Öncelikle yığın(stack) yapılarını biraz açıklamak istiyorum. Yığınlar FİLO(First İn Last Out) prensibine göre çalışırlar. Yani ilk giren eleman son sırada çıkmalıdır.

Node sınıfı içinde düğümün veri ve bağlantı adreslerini tutan nesneleri tanımladım. Bliste sınıfı içinde yapıcı metod(public bListe()) içinde bağlı liste yapısını oluşturdum. Ayrıca bu sınıf yapıya eleman ekleyen, yapıdan eleman silen ve yapıyı listeleyen üç metodu da içermekte. Program sınıfı içinde ise ekle, sil ve listele metodlarını çağırdım.

ASP.NET ile Sayfalama İşlemleri

admin | 27 August 2010 15:02

Merhaba,
Bu yazımda ASP.NET ile sayfalama işlemleri hakkında bilgi vereceğim. Sayfalama işlemlerini veritabanımızda çok veri olduğu zaman kullanmaktayız. Benim yapacağım örnekte DataList ile sayfalama yapacağım. Kodumuzda en önemli kısım ise SqlDataAdapter’ın Fill() metodudur. Fill metodunun parametreleri arasında kaçıncı kayıttan başlanacağı ve kaç kayıt gösterilereceği gibi bizim işimize oldukça yarayan parametreler bulunmaktadır. Kaçıncı sayfada olduğumuzu QueryString ile almaktayız. Kodlar ise aşağıdaki gibidir :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
/// <summary>
/// Summary description for Sayfalama
/// </summary>
public class Sayfalama
{
//DataList'te bulunan verileri sayfalama kodu
//Veriyi Çekme
/*
int sayfano = 1;
if (String.IsNullOrEmpty(Request.QueryString["sayfa"].ToString()))
{
sayfano = 1;
}
sayfano = int.Parse(Request.QueryString["sayfa"].ToString());
//Bu kısımdaki 3 sayısı bizim sayfa başına göstereceğimiz kayıt sayısıdır. Bu kısmı kendinize göre değiştirmeniz gerekmektedir.
DataList1.DataSource = Sayfalama.DataListVeriGetir(sayfano, 3, "isimler", new System.Data.SqlClient.SqlConnection(@"Data Source=.\sqlexpress; Database=master;Integrated Security=true"), "select * from isimler");
DataList1.DataBind();
int toplamkayit = Sayfalama.TablodakiKayitSayisi("isimler", new System.Data.SqlClient.SqlConnection(@"Data Source=.\sqlexpress; Database=master;Integrated Security=true"));
//Bu kısımdaki 3 sayısı bizim sayfa başına göstereceğimiz kayıt sayısıdır. Bu kısmı kendinize göre değiştirmeniz gerekmektedir.
decimal sayfanumaralari = Math.Round((decimal)toplamkayit / 3);
LinkButton sayfalar;
for (int i = 1; i <= sayfanumaralari; i++)
{
sayfalar = new LinkButton();
sayfalar.Text = i.ToString();
sayfalar.Attributes["href"] = "default.aspx?sayfa=" + i.ToString();
Panel1.Controls.Add(sayfalar);
}
*/
//Verilen tablodaki toplam kayıt sayısını geri döndürür.
public static int TablodakiKayitSayisi(string TabloAdi, SqlConnection BaglantiCumlesi)
{
string SqlKomut = "SELECT COUNT(*) FROM " + TabloAdi;
SqlCommand komut = new SqlCommand(SqlKomut, BaglantiCumlesi);
int KayitSayisi = 0;
try
{
BaglantiCumlesi.Open();
KayitSayisi = int.Parse(komut.ExecuteScalar().ToString());
}
finally
{
BaglantiCumlesi.Close();
}
return KayitSayisi;
}
//Verilen SQL cümlesine uygun veri setini geri döndüren fonksiyon
//SayfaNo = Kaçıncı sayfa olduğunu belirtir.
//KayitSayisi = Sayfada kaç tane kayıt gösterileceğini belirtir.
//TabloAdi=Veritabanındaki tablo adı.
//BaglantiCumlesi=SQL bağlantı cümlesi.
//SqlCumle = Select sorgusu
public static DataSet DataListVeriGetir(int SayfaNo, int KayitSayisi, string TabloAdi, SqlConnection BaglantiCumlesi, string SqlCumle)
{
SqlDataAdapter da = new SqlDataAdapter(SqlCumle, BaglantiCumlesi);
DataSet ds = new DataSet();
int baslangic = ((SayfaNo * KayitSayisi) - KayitSayisi);
da.Fill(ds, baslangic,KayitSayisi, TabloAdi);
return ds;
}
}

Bizim bu kodumuzda sayfa başına 3 adet kayıt gösterilmektedir.

C# ile Operator Overloading

admin | 23 August 2010 14:24

Merhaba,
Bu yazımda bir çok dilde bulunan operator overloading özelliğinin C# ile nasıl yapılabileceğini anlatacağım. Operator overloading(operatörleri aşırı yükleme) metotları aşırı yüklemeye benzer bir yapıya sahiptir. Operatörleri aşırı yükleme ise C# ile kullandığımız ,-,*,/,%, ,– gibi operatörlerin bizim oluşturduğumuz class içinde nasıl davranacağını belirleyebildiğimiz bir kavramdır. Örneğin aşağıdaki kod bloğuna inceleyelim :

1
int a = 10+5;

Burada iki adet int sayıyı topladık. Yani bizim burada yapacığımız iş operatörünün bizim yazdığımız class’ta daha farklı bir iş gerçekleştirebilmesidir. Ben burada örnek olarak C#’ta bulunmayan bir type’ın C#’a optimize edilmiş bir biçimini yazacağım. Bir karmaşık sayı sınıfı yazarak bunu programlarımızda nasıl kullanabileceğimizi anlatacağım. Örnek olarak aşağıdaki gibi bir class yazalım :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class KarmasikSayi
{
private double reel { get; set; }
private double sanal { get; set; }
public KarmasikSayi(double reel, double sanal)
{
this.reel = reel;
this.sanal = sanal;
}
//Toplama operator overloading
public static KarmasikSayi operator +(KarmasikSayi sayi1, KarmasikSayi sayi2)
{
return new KarmasikSayi(sayi1.reel + sayi2.reel, sayi1.sanal + sayi2.sanal);
}
//Çıkarma operator overloading
public static KarmasikSayi operator -(KarmasikSayi sayi1, KarmasikSayi sayi2)
{
return new KarmasikSayi(sayi1.reel - sayi2.reel, sayi1.sanal - sayi2.sanal);
}
public override string ToString()
{
return String.Format("{0} {1}i", reel, sanal);
}
}

ASP.NET ile Transparan PNG Thumbnail Oluşturma

admin | 18 August 2010 17:58

Bu kodaman.org’daki ilk yazım. Merhaba;
Bu yazımda ASP.NET ile transparan png dosyalarından thumbnail resimleri oluşturmayı anlatacağım. Bir proje üzerinde çalışırken 600-700 resmi kataloğa göre boyutlandırmam gerekiyordu ve bunları teker teker yapana kadar bunu ASP.NET ile nasıl yaparım diye düşündüm ve araştırdım. İnternette bulduğum çoğu makalede Image sınıfının GetThumbnailImage metodunu kullanarak yapıyordu. Ve bu metot resminizin kalitesini düşürdüğü gibi transparan PNG resmimizin kenarlarınada siyah veya gri kenarlıklar veriyordu. Eğer yüksek kaliteli resimlerle çalışıyorsanız GetThumbnailImage metodunu kullanmamanızı tavsiye ederim. Benim yazdığım bu kodda resmi verilen yüksekliğe göre oranlıyoruz. Şimdi bir aspx sayfası oluşturarak code-behind aşağıdaki namespace’leri import ediyoruz :

1
2
3
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;

Silverlight ‘da EasyFunction kullanımı

admin | 08 June 2010 14:28

Bu yazımda silverlight’da animasyon yaparken daha efektif animasyonlar hazırlamamıza yardımcı olan easy functionlardan bahsedicem.Silverlight’da herhangi bir nesnenin bir noktadan bir noktaya hareketi sırasında doubleAnimation kullandığımızda başlangıç noktasın’dan bitiş noktasına doğru doğrusal(düz) bir şeklide ilerliyecektir.ama bu ilerleme sirasında hareket eden nesnenin sağa sola hareket etmesi önce yavaşlayıp sonra hızlanması veya elastik bant gibi hedefe bir ileri bir geri şeklinde ulaşmasını istediğimizde easy functionlardan faydalanırız.okuduklarınızdan kafanızda bir şeyler oluşmadıysa sekil üzerinde daha iyi anlıcaksınızdır…

IBAN Numarası Doğrulama

admin | 25 March 2010 11:28

Kimi zaman uygulamalarımızda kullanıcıların banka bilgilerini almak gerekebilir. 01 Ocak 2010’dan itibaren hesaplar arası transfer işlemlerinin IBAN numarası kullanımı zorunlu hale getirlmiştir. Kullanıcılarıdan alınan IBAN bilgisinin gerçek olup olmadığını bilemeyiz ama doğruluğunu kontrol edebiliriz. Bunun için http://www.tcmb.gov.tr/iban/teblig.htm adresinde yayınlanan kurallara uygun olup olmadığını kontrol ederek giderebiliriz.

Bu makalede anlatılan C# ile bu kontrolün nasıl yapıldığıdır. Kontrol kuralları http://www.tcmb.gov.tr/iban/teblig.htm adresinde açıkça anlatıldığı için yalnızca kod içerisine gerekli açıklamaları koymayı yeterli gördüm. Önce bu kuralları okuyarak sonra da kodu uygulayarak devam edebilirsiniz.

C# ile Normal For ve Paralel For Döngülerinin Karşılaştırması

polatengin | 18 December 2009 14:45

Yazdığımız uygulamaların olmazsa-olmaz’larından birisi de, döngülerdir, özellikle for döngülerini sıklıkla kullanırız.

Bu makaleyi okumaya devam etmeden önce, TPL (Task Parallel Library) – Task Class konusunda bilgi sahibi olmak için, MSDN’deki şu sayfaya bakabilirsiniz: Parallel Programing in .Net Framework (Türkçe kaynak için : TPL (Task Parallel Library) – Task Class ve Normal For ve Paralel For Döngülerinin Karşılaştırması)