Split Metodu
|
Erkan Sezer
|
C# ile string ifadeleri birbirinden ayırmaya yarayan çok kullanışlı bir
metoddan bahsedeceğim. Aslında Java`da kullanılan Strıng Tokenizer`ı
biraz andırması sebebi daha önce Java ile yapmış olduğum bir örneğin
text olarak aynısını ekrana yazıp örneği anlatacağım, daha önceki Java
örneğini görmek için tıklayınız.
"Erkan Sezer Filenet P8 Platformunda Calisiyor" gibir bir textimiz
olsun ve boşluk karakterlerini referans alarak bu değerleri string
parse işlemleri yapmadan ekrana tek tek yazdıracağım fakat burda küçük
bir ayrıntıya dikkat etmemiz gerekiyor. Referans olarak boşluk
karakterini aldik.
Kod bloğumuz aşağıdaki gibidir, her zamanki gibi değerleri ayrı ayrı MessageBox ile ekrana yazıyorum.
string text = "Erkan Sezer Filenet P8 Platformunda Calisiyor";
for (int i = 0; i < text.Split(` `).Length; i++)
{
MessageBox.Show(text.Split(` `)[i]);
}
Sizinde görmüş olduğunuz gibi text değişkenini split metodu ile ve
metodda da boşluk karakterini referasn olarak ekrana ayrı ayrı
yazdırmaktayım.
|
|
14 Şubat 2010 Pazar
|
|
|
|
|
Custom Datatable Kullanimi
|
Erkan Sezer
|
.Net de DataGridView componenti ile databaseden gelen verileri datatable`a veya dataset`e aktararak, olusturulan dataset veya datable`i da DatagridView`in datasource propertiy`sine atayarak gosteririz. Peki elimizdeki veriler database`den gelmiyorsa yani bu verileri biz kendimiz hardcoded olusturmusssak bunu gridde nasil gosterecegiz? Bununla ilgili kucuk bir ornek yapacagim.
Oncelikler veriler bir banka musterisine ait olsun ve Musterinin nosu adi ve adresi bu verileri olustursun. Biz datatable nesnesine bu verileri atayacagiz ve daha sonrada gridde gosterecegiz. Adim adim atlatmak gerekirse;
DataTable Dt = new DataTable();
DataRow Dr;
DataColumn MusteriNo = new DataColumn("No", System.Type.GetType("System.String"));
DataColumn MusteriAdi = new DataColumn("Isim", System.Type.GetType("System.String"));
DataColumn MusteriAdres = new DataColumn("Adres", System.Type.GetType("System.String"));
Dt.Columns.Add(MusteriNo);
Dt.Columns.Add(MusteriAdi);
Dt.Columns.Add(MusteriAdres);
Datatable ve datarow olusturduk ve daha sonra table da kullanacagimiz column`lar olusturuldu. Ornektende gorebilecegiz gibi kolon isimleri :No, Isim ve Adres.
Dr = Dt.NewRow();
Dr[0] = "100";
Dr[1] = "Erkan Sezer";
Dr[2] = "Sahrayicedit";
Dt.Rows.Add(Dr);
Dr = Dt.NewRow();
Dr[0] = "101";
Dr[1] = "Yavuz Selim Keresteci";
Dr[2] = "Goztepe";
Dt.Rows.Add(Dr);
Yukarda ise ; datatable` da row`lar olusturduk ve olusturulan rowlara degerler atadik, atadigimiz bu rowlari da databale`a ekledik. Bundan sonrasi zaten en basit olan kismi. Yapmamiz gereken sadece olusturdugumuz bu datatable nesnesini gostermek istedigimiz datalari icin kullanacagimiz grid nesnesinin datasource property`sine atamak. Programimizi calistirdigimizda gorecegimiz gibi sutun basliklari No, Isim ve Adres olan gridde bizim manuel olarak yani hardcoded olarak set ettigimiz datalari gorunecektir.
dataGridView1.DataSource = Dt;
|
|
20 Temmuz 2009 Pazartesi
|
|
|
|
|
Ping Atma
|
Erkan Sezer
|
Son zamanlarda sitelerde C# ile ping atilan kod parcalari goruyorum ama bircogu da bunun calismiyor , bundan dolayi burda Ping atma isle ilgili kucuk bir kod parcasi yazacagim. Asagidaki kod bize TextBox (www.erkansezer.com gibi) icine yazdigimi adrese ping atarak geri adres degerini gostermektedir.
Oncelikle Ping atmak icin System.Net.NetworkInformation namespace ine ihtiyac duyariz. Koda da bakacak olursa bize geri donen responsun IPStatus degerine bakarak gonderdigimiz paketin buyuklugu , donanim hatasi veya asagidaki gibi basarili olmus bis islemin sonucunda bizde kullaniciya ping atilan yerin IP adresini gostermekteyiz.
try
{
Ping ping = new Ping();
PingReply response = ping.Send(textBox1.Text);
if (response.Status == IPStatus.Success)
{
MessageBox.Show(response.Address.ToString());
}
}
catch (Exception Exc)
{
MessageBox.Show(Exc.Message.ToString());
}
|
|
19 Temmuz 2009 Cumartesi
|
|
|
|
|
Delegate Event Kullanimi
|
Erkan Sezer
|
C# da delegate ve event olusturmakla ilgili bir ornek anlatacagim. Oncelikle delegate olusturacagiz ve bunda tureyen de eventimizi olusturacak ve ekrana bir mesaj basacagiz. Burda , verdigim ornekler kucuk kucuk kod bloglari ve ipuclari oldugundan dolayi event ve delegate nerde ve nasil kullanilir gibisinden bir aciklama yapmayacagim. Asagida ornek kod blogunu ve aciklamasini bulabilirsiniz.
Aynen method tanimlar gibi bir delegate tanimliyoruz , burdaki farkin delegate kelimesi oldugunu goruyorsunuz.
public delegate void dlgMesajYaz();
Daha sonra bir class olusturuyor ve bu class da da dlgMesajYaz delegate inden Event handler ile Evetn olusturuyoruz. Daha sonra da yazdigimiz procedure ismini event ile cagiriyor ve bir button yardimi ile de ekrana MessageBox da istedigimiz mesaji yazdiriyoruz. Yazdigimiz class asagidadir.
class EventTest
{
public event dlgMesajYaz evntMesajYaz;
public EventTest()
{
evntMesajYaz += new dlgMesajYaz(MesajYazdir);
}
public void MesajYazdir()
{
MessageBox.Show("Event Delegate Anlatimi");
}
}
En son olarak da button yardimi ile ekrana mesaji basiyoruz.
EventTest msg = new EventTest();
msg.MesajYazdir();
|
|
27 Nisan 2009 Pazartesi
|
|
|
|
|
Fonksiyonlarin Asiri Yuklenmesi
|
Erkan Sezer
|
Fonksiyonlarin asiri yuklenmesi ile ilgili bir ornek yapacagim. Yani ayni isimde olan fonksiyonlarin farkli parametreler kullanilarak bu fonksiyonlarla islemler yaptiracagiz. Ben burda bir toplama islemi yaptirdim. Fonksiyon isimleri ayni ama aldiklari parametreler ve bana dondugu degerlerin turu farkli.
Oncelikle basit class yazdim ve daha sonrada bunlarin instance i almak icin bir butonun altina kodlarimi ekledim, tabiki isterseniz ekrana da bunlari yazdirabilirsiniz. Ornegimiz asagidadir:
class AsiriYukleme
{
public int Toplama(int x, int y)
{
return x + y;
}
public double Toplama(double x, double y)
{
return x + y;
}
public float Toplama(float x, float y)
{
return x + y;
}
}
Bunlari cagirdigim butonun altina ekledigim kodda asagidaki gibidir:
AsiriYukleme ay = new AsiriYukleme();
int intDeger = ay.Toplama(10, 10);
float floatDeger = ay.Toplama(12f, 12f);
double doubleDeger = ay.Toplama(15.0, 15.0);
|
|
27 Nisan 2009 Pazartesi
|
|
|
|
|
Params Keywordu ile Metoda Parametre Gecirme
|
Erkan Sezer
|
Metodlara parametreler set ederiz ve metodlarin icinde bu parametre degelerine gore islemler yapariz. Bu deger 1 ve birden cok daha fazla olabilir. Peki bu parametre degerlerini params degeri ile nasil gondeririz? Bununla ilgili basit bir ornek yapacagiz.
Bu islemin en fazla kullanildigi yerlerden biri sp lere deger set ederken kullanilmaktadir. Biz burda basit bir toplama islemi yaptiracagiz , daha sonra da bunu ekrana messagebox ile yazdiracagiz.
Toplama icin kullanilacak procedure :
private int ToplamProcedure(params int[] GelenDizi)
{
int ToplamDegeri = 0;
for (int i = 0; i < GelenDizi.Length; i++)
{
ToplamDegeri += GelenDizi[i];
}
return ToplamDegeri;
}
Bu procedure yi cagiracak ve ekran mesaj olarak yazdiracagimiz kisimda asagidaki gibidir : Sonuc olarak bize 162 donecektir.
int [] Dizi = {7,2,6,145,2};
int ToplamSonuc = ToplamProcedure(Dizi);
MessageBox.Show(ToplamSonuc.ToString());
|
|
13 Nisan 2009 Pazartesi
|
|
|
|
|
String Formatlama
|
Erkan Sezer
|
Ekranlara tarih degerlerinde ve string tipinde ifadeleri belirli formatlara gore yazdirmak isteriz. Bununla ilgili bir ornek yapacagim. Ilk ornekte o gune ait tum gunu formatli bicimde verecegim ve bunu ekrana mesaj olarak yazdiracagim.
DateTime tarih;
tarih = DateTime.Now;
MessageBox.Show(String.Format("{0:D}", tarih).ToString());
String format kismini su sekilde degistirirsem String.Format("{0:dddd}",tarih) kismini su sekilde degistirirsem hangi gunde oldugumuzu ekrana yazdiracaktir.
Bunu biraz daha degistirirse : String.Format("{0:MMMM}", tarih) gibi , bu degerde hangi ayda oldugmuzu ekrana yazdiracaktir.
String formatlama islemini sadece tarih degerlerinde degil; sayilarda ve para birimlerinde de kullanilmaktadir. Bu islem bize buyuk kolayliklar saglamaktadir.
|
|
13 Nisan 2009 Pazartesi
|
|
|
|
|
Environment Variables
|
Erkan Sezer
|
Sistemlerimizde tüm uygulamalar tarafindan erişilen değerler vardır (Environment Variables) Bu değerlere erişmek isteyebiliriz ve burda çeşitli durumlarda kullanırız. Örneğin TEMP dosyamızda geciçi resimleri turmak veya kendi oluşturduğumuz bir folderda txt dosyarı tutmak gibi. Tabiki bunların uzun uzun pathlerini yazmayacağım.
Sizinde çok rahat şekilde göreceğiniz gibi MessageBox ile bunları ekrana yazdırdım. Bunların dışında da çok daha fazla değer tutabiliriz.
Makina ismi , işletim sistemi ile ilgili özellikler, system directory si , ve TEMP dosyasına ulaşmak için aşağıdaki kodlar işimizi görecektir.
MessageBox.Show(Environment.MachineName.ToString());
MessageBox.Show(Environment.OSVersion.Platform.ToString());
MessageBox.Show(Environment.OSVersion.ServicePack.ToString());
MessageBox.Show(Environment.OSVersion.Version.Major.ToString());
MessageBox.Show(Environment.OSVersion.VersionString.ToString());
MessageBox.Show(Environment.ProcessorCount.ToString());
MessageBox.Show(Environment.SystemDirectory.ToString());
MessageBox.Show(Environment.UserDomainName.ToString());
MessageBox.Show(Environment.UserName.ToString());
MessageBox.Show(Environment.GetEnvironmentVariable("TEMP").ToString());
|
|
11 Nisan 2009 Cumartesi
|
|
|
|
|