You didn't hear it wrong :)

RegexOptions.Multiline option dosen't work C#.Net Regex.

There is a little suggestion. You can use;

strContent = strContent.Replace("\r","");
strContent = strContent.Replace("\n","");

I hope it's usefull ;)

Have a nice day ;)

Selametle...



Bir önceki yazımızda Regular Expression'lar hakkında bilgi sahibi olmuştuk. Şimdi ise olayı örnekler yaparak nasıl pekiştireceğimizi göreceğiz.

Örnek 1

C#'da yazdığınız programda bir alana yanlızca 5 haneli bir sayı girdirmek istediğimizi düşünelim. Normalde bir programcının elinin altında bu işi gerçekleştiren componentler bulunur fakat bulunmadığını ve kullanmak istemediğinizi varsayıyorum :)

Bu işlemin aynısını Formunuza bir MaskedTextBox koyup Mask özelliğine 5 tane sıfır yazarak da gerçekleştirebilirsiniz.

Fakat bizim amacımız bunu RegularExpression ile yaptırmak. Daha karmaşık şeyler gerektiğinde MaskedTextBox kesinlikle işinize yaramayacaktır ;)

Formumuza 1 adet TextBox ve 1 adette Button koyalım. Örneklerimizin vazgeçilmez klasik kontrolleri :)

İlk olarak Kod sayfamızın en tepesine

using System.Text.RegularExpressions;

yazıyoruz. Daha sonra Button'umuzun Click olayına;

Regex regex = new Regex(@"\d{5}");
if (regex.Match(textBox1.Text).Success)
    MessageBox.Show("Girdiğin doğru bir değer");
else
    MessageBox.Show("Yanlızca 5 rakamlı bir sayı girebilirsin.");

yukarıdaki kodu yazdıktan sonra uygulamamızı çalıştırıp test ediyoruz. Uygulamamız aşağıdaki gibi sonuç verecektir.

Devamı...

After the long time...

Birçoğumuzun programlama hayatında önemli yer teşkil eden Regular Expression(Düzenli İfadeler)'lardan bahsetmek istiyorum sizlere. Regular Expression hemen hemen güncel tüm programlama dillerinde yerini almış durumda.

Regular Expression'lar çok uzun bir konu olduğundan dolayı ben sizlere bölüm bölüm anlatmayı uygun görüyorum. İlk bölümümüzden başlayalım.

Peki nedir bu Regular Expression denen olay ve ne işe yarıyor ? Ben Regular Expression'ı yazı boyunca "Regex" olarak isimlendireceğim.

Örnek üzerinden gitmek gerekirse bir text dosyanız var ve bu text dosyası içerisinde bulunan mail adreslerini listemelek istediniz, ya da web sitesi adreslerini ya da formata uygun telefon numaralarını. Bu işlemi normal yoldan gerçekleştirmeye kalkmış olsanız, birsürü zaman kaybı, yorgunluk ve benzeri şikayetlerle bezme noktasına gelebilirsiniz.

Regexler sizlere gelişmiş arama ve değiştirme özellikleri sağlar.

Halbuki Regex kullanarak bu işlemi dakikalar içerisinde gerçekleştirebilirsiniz. Ben size hem C# üzerinde basit bir uygulama ile hem de Asp.net kullanarak Regex uygulamalarını nasıl gerçekleştirebileceğinize dair örnekler vereceğim.

Devamı...

Geçen gül ORM ile alakalı makaleleri incelerken Evcil.net'de varolan Muhammed TAHİROĞLU'nun yazmış olduğu ORM'de Su Bulanık başlıklı bir yazı okudum. ORM ile alakalı bende araştırmalarımı sizinle paylaşayım dedim.

ORM(Object/Relational Mapping) nedir sorusunu şöyle kısa bir tabir ile belirtsek fena olmaz sanırım. ORM kısaca hiç denecek kadar (kadarı yok aslında öyle) SQL kodu yazmadan veritabanı ile iletişim kurabilen bir yapı. Daha doğrusu sizin veritabanı ile nesneleriniz arasındaki ilişkişiyi oluşturan yapı diyebiliriz.

Düşünün ki C# 'da Musteri isminde bir Class oluşturdunuz. Daha sonra bu Class'ın özelliklerini belirlediniz. MusterID, MusteriName vs. gibi. Musteri Class'ının ismini yazıp "."'ya bastığınızda Intellisense size o sınıfın MusteriID, MusteriName gibi alt özelliklerini listeleyecektir. Bunu zaten yapıyoruz.

ORM tarafında DLINQ'den örnek verecek olursak bir DMBL dosyası oluşturup Tabloları içerisine sürüklediğimizde kod tarafında da DataContext'imizin ismini yazıp "."'ya bastığımızda yine Tablolarımızın listelendiğini ve o tablomuzun da içerisindeki alanların listelendiğini görürsünüz. Yapmış olduğumuz işlemi manuel olarak yapmış olsaydık işimiz bayağı bir uzayacaktı ve zamandan kaybetmiş olacaktık.

ORM araçları ise bizlere bu işlemi sağlıyor. Veritabanı model dosyalarımızı oluşturuyoruz ve kod tarafında ise basit bir şekilde kod yazmadan veritabanındaki verilerimize erişim sağlayabiliyoruz.

Kısacası örnekleyecek olursak, Settings tablom var ve ben bu tablonun altında 8 tane alanım var. Ben bu tabloma erişmek için yapacağım işlemleri sıralayayım;

1. Connection nesnesi oluştur.
2. Command nesnesi oluştur.
3. Connection nesnesini aç.
4. Command'a komut ve connection'ı ata.
5. DataReader oluştur.
6. DataReader'a Command'ı çalıştır.
7. While döngüsü oluştur.
vs. vs. vs.

bu böyle uzar gider. Ve eğer ki bir fonksiyon oluşturup bu işlemi yaptırmıyorsanız her çekmek istediğiniz yerde bu yapıyı kullanmak zorunda kalabilirsiniz.

ORM de yaparken ise bir seferliğine data modelinizi oluşturuyorsunuz. Daha sonra ise adımları yazıyorum.



Devamı...

Etiketler : orm nhibernate ilişkisel veritabanı
Kategoriler : CSharp.Net
Yorumlar : 0 Yorum Yorum Yaz
Blogsa v1.0.0 Beta 1 sürümü bu gece itibari ile yayınlandı. Bende gece itibari ile konu açmak zorunda kaldım :)

Biliyorsunuz kodlamaya bende dahilim ve günden güne hızla gelişiyor Blogsa. Artık kişisel sitenizi kurarken bu benim ihtiyaçlarımı karşılıyormu acaba gibi bir düşünceniz olmayacak. İlerki zamanlarda sizlerin de desteği ile çok büyüyeceğine inanıyorum. Blogsa'nın ilk çıkan beta sürümünü indirmek için www.blogsa.net adresine bekliyoruz sizleri.



Visual Studio 2005Bugün 9:30 ile 11:45 arası Samsun Atakum Teknik Lisesinde C#.Net, Asp.Net ve SQL 2005 Seminerimiz vardı. Aslında video ve resim çekmeyi düşünüyorduk fakat unutkanlığa mı denk geldi yoksa başka birşey mi bilemem Video ve Resim çekemedik.

Biraz sizlere Seminer ile alakalı izlenimlerimden bahsetmek istiyorum. Umarım 9 Ekim'de ki seminerimizde video ve fotoğraf çekimi yapabiliriz.

Öncelikle gerekse ilk seminerimiz ve de eğitim gördüğümüz okula seminer vermek bizi heyecanlandırdı desek yalan olmaz. Fakat ortam ve seminer verdiğimiz öğrenci ve hocalarımız duruma hazır olduklarından heyecan denen şeyi 5-10 dakika içerisinde atmış olduk. Daha sonra da susmak bilmedi(k)m. Seminer'i 2 Oturum olarak ayırdık. Birinde C#.Net ve SQL 2005, 2.ci Oturumda ise Asp.net 2.0, Asp.net 3.5 ve SQL 2005 den bahsetmek niyetimizdi :) Fakat nedense bu süreyi bir türlü yetiremedik. Semineri Can Dostum güzel insan Erdem ile beraber verdik.

İlk Oturumda Seminer'e C#.Net ile başladık. C#.Net ve VB.Net arasındaki farklardan bahsettik. Visual Studionun kullanıcılarına sağladığı avantajlardan bahsettik. Daha sonra baktıkki zaman çok hızlı geçmiş ve 1.ci oturum için hazırladığımız bölümü bitiremeden zaman bitmiş :)

İkinci Oturumda ise zaman gerçekten çok hızlı geçti. Fakat hedeflediğimiz gibi olmadı pek. Aralarda Asp.net 3.5 getirdiği yeniliklere 1-2 değinsek de konuyu fazla dağıtmamak için girmedik. Allah'tan uygulamaları bitirmek için vaktimiz tamı tamına yetti :) (Öğrenci kardeşlerimizden çaldığımız 5 dakikayı saymazsak :)).

Son olarak da Visual Studio araçlarını kullanarak öğrencilerin kendilerini nasıl geliştirecekleri, hangi araçları kullanmaları onlar için yararlı olacağını onlara anlatmaya çalıştık. Visual Studio ile alakalı bilgileri biraz daha fazla olsaydı sanırım daha fazla verim alacakları kanaatindeyim.

Umarım bir dahaki Samsun ATL seminerinde daha uzun oturumlar düzenleyebilir hatta olabilirse 1 Haftalık Workshoplar düzenleyerek Öğrencilerin daha fazla bilgilenmesine yardımcı olabiliriz.

2 gün sonra tekrar görüşmek üzre Selametle...

Uzun bir ara verdik. Vakit bulduğum için küçük bir makale yayınlayayım dedim. Çoğumuz program yazdığımız ilk başlarda Hata koruması kullanmadığımız için programımızın işleyişi durabilir ya da hiç çalışmaz bir hal alabilir. Akıllı bir programcı programının düzgün ve sorunsuz çalışmasını istiyorsa mutlaka programlama yaparken try catch finally kod bloklarını kullanmıştır. Bizde küçük de olsa try catch finally e değinelim.

Misal Convert.ToInt32 komutunu C# kullanan herkes karşılaşmış, görmüş ve ya kullanmışlığı vardır.

Girilen string bir değeri veya daha farklı türde bir değeri misal double int'e çevirmek istiyorsak genelde Convert.ToInt32 komutunu kullanırız. Bunu kullanırken girilen değerimiz alacağımız sonuç değerine uygun değilse ve biz try catch kullanmamışsak programımızın işleyişi duracak ve hata verecektir. Bildiğiniz üzere de programcının hata görüp programının çalışmamasını görmek çoğu zaman sinir bozucu bir hal almaktadır. Bunun için en mantıklı yöntem try catch bloklarını kullanarak hata esnasında programın sonlanmasını engelleyebilir ve kullanıcıya daha mantıklı ifadeler çıkarabiliriz.

Gelelim örneğimize. Ben bu örnekde Textbox'a girilen değeri 2 şekilde Int'e çevirmeye çalıştım. Birincisinde try catch kullanmadım ve sonucu gördüm. Aynı şekilde birde try catch finally kullandım ve sonucu tekrar kontrol ettim. Programıma 1 textbox 1 label ve 2 button koydum ve yazdığım komutlar şöyleydi.

Try Catch Finally Kullanarak

private void btnKontrolEt_Click(object sender, EventArgs e)
{
try
{
Convert.ToInt32(txtDeger.Text);
}
catch (Exception Hata)
{
MessageBox.Show(Hata.Message);
}
finally
{
MessageBox.Show(txtDeger.Text + " deeri kontrol edildi.");
}

Try Catch Finally Kullanmayarak

private void btnKorumasizKontrol_Click(object sender, EventArgs e)
{
Convert.ToInt32(txtDeger.Text);
}

2 buttonun birisine hata kontrolü koydum diğerine koymadım. Şimdi burda bilmemiz gereken şeyler;

try {} arasına yazdığımız kodlar normal şekilde işleyen kodlardır.
catch{} hata olduğunda yapılacak olan işlemler. Exception ile belirlediğimiz bir değişkene Hata ayrıntılarını yükleriz. Misal ben Exception Hata dedim. ve Hata.Message ile de hata mesajını aldım.
finally{} ise hata olsa da olmasa da gerçekleştirilecek olan işlemdir. Misal Bağlantı nesnesini sonunda ne olursa olsun kapatmak istiyorsanız finally arasına bu kodu yazabilirsiniz.

Programı Çalıştırdığımda Hata Kontrolsüz butona tıkladığımda aldığım hata programın durdurulmasına ve aşağıdaki hatayı almama neden oldu.

Hata kontrolü yaptığımda aldığım mesaj ise aşağıdaki gibi ve hatalı işlem yapmama rağmen program durmadı.

Ve son olarak da hata olsa da olmasa da finally ile aldığım mesaj

Anlatacaklarım bu kadar. İftar sonrası performans bu kadar :)

Hepinize yaralı olması dileği ile.

Selametle..



Hata

Ben bu hata ile bugün tekrar karşılaştığım için yazma gereği duyuyorum sanırım sizler için de yararlı olacaktır. Bu hatayı almanızın muhtemel bir sebebi sağlayıcı makinanızda kurulu olmayabilir. Bu kurulumu gerçekleştirmek için aşağıdaki linki ziyaret edip size uygun olanını bilgisayarınıza kurmaktır. Bunun probleminizi çözmeyeceği de muhtemel olabilir.

http://support.microsoft.com/default.aspx?scid=kb;en-us;239114

Bir diğer sebebi ise Vista kullanıyor olmanız ki olma ihtimaliniz yüksek olabilir (64 Bit). Bu sebepten de bu hata ile karşılaşmış olabilirsiniz. Bu hatayı gidermek için ise sırası ile;

Projenize sağ tuş ile tıklayıp Properties'e tıklayın.
Daha sonra Build sekmesine geçin.
Platform Target bölümünden x86'yı seçin ve Apply butonuna basın.

Çözüm

Hatanız düzelecektir. Eğer daha farklı bir sorun ile karşılaşırsanız Makalenin altına yorum ekleyerek yazabilirsiniz.



RSS 2.0
Sor Bakalım...
Arama
  Ara
Paylaş
| Diğer
Destek