C# etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
C# etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

2008-01-07

HTML Tagları Temizlemek

string WebSayfasi= KaynakAl(http://www.mehmetguzel.net);
string WebSayfasiIcerigi= HtmlSil(WebSayfasi);

//RemoveHtml Gökhan BAĞCI'nın Web Sayfasından alınmıştır.
private string RemoveHtml(string Html)
{
return Regex.Replace(temp, @"<(.\n)*?>", string.Empty);
}

//KaynakAl CSharpnedir.com'dan alınmıştır.
private string KaynakAl(string adres)
{
// "Siteye Bağlanıyor...";
WebResponse benimResponse = null;
try
{
WebRequest benimWebRequest = WebRequest.Create(adres);
benimResponse = benimWebRequest.GetResponse();
}
// Eğer internet bağlantısı yoksa yada site adresi yanlış ise :
catch (WebException e)
{
// "Siteye Bağlanamıyor.";
return null;
}
// Site içeriği stream olarak alınıyor :
Stream str = benimResponse.GetResponseStream();
StreamReader reader = new StreamReader(str);
string kaynak = reader.ReadToEnd();
// Tüm içerik küçük harfle döndürülüyor.
//Daha fazla kontrol yapmamak için bir önlem
return kaynak.ToLower();
}


Not: Yukarıdaki kodları programınızda kullanırken hata ile karşılaşmamak için aşağıdaki name spaceleri kullanın:
using System.Text.RegularExpressions ;
using System.Net;
using System.IO;

2007-11-23

Veri Toplama Yöntemleri

Veri Toplama Yöntemleri üzerinde fikir jimnastiği yapabilmek için CETURK'te aynı ismi taşıyan bir konu açtım. Sizler de hayatınızın bir döneminde verilerin taşınması için bir şeyler geliştirdiyseniz konuya katılımlarınızı beklerim.

Açmış olduğum konunun içeriğini aynen aşağıya aktarıyorum:

Merhaba Arkadaşlar,

Artık birçok uygulama dağıtık bir mimaride birden çok yerde çalışabiliyor. Örneğin merkez serverımız İstanbul'da iken ülke içinde/dışındaki illerde, ilçelerde clientlarımız olabiliyor. Bu mimarilerde server ve clientler LAN, WAN yada başka yollarla birbirne bağlı olabiliyor. Uygulamaların çoğunda anlık veriler hayati öneme sahip olabiliyor. Clientlardaki bu anlık verilerinizi çalıştığınız projelerde merkez server a nasıl ulaştırıyorsunuz? Uyguladığınız yöntemlerin avataj ve dezavantajlarını hep birlikte tartışalım. Bugüne kadar gerek yazdığım uygulamalarda internet üzerinden direk merkez serverdaki database yazma, Secure Mail üzerinden merkeze EDI formatında dosyaların yollanması, binary dosya şeklinde gönderme ve son olarak MS SQL Server üzerinde replikasyonu kullandım. Şu an ise WCF üzerinden anlık veri gönderimi üzerine uğraşıyorum.


İnternet hattı üzerinden merkez servera yazmadaki dezavantajlar: her uygulama ve mimari için geçerli
olmayabiliyor(clientlarınızın internet hattı yoksa, hatlar sürekli timeout a düşecek kadar yavaşsa vs). Avantajı ise verilerin taşınması ile uğraşmıyorsunuz. Secure Mail ve dosya gönderim işinde çok nadirde olsa
eksik dosyaların gelmesi ve bunları kontrolu zor olabiliyor, dosyalar yolda bozulabiliyor vs gibi dezavantajlar. Replikasyon gayet temiz ve sağlıklı fakat özellikle veritabanı tasarımsal olarak sürekli değişime açık olacaksa her değişiklik anında tekrar başa dönersiniz. Başa dönmenin zahmet ve risklerini
anlatmama gerek yok:)

Zaman buldukça daha detaylı olarak avantaj/dezavantajlara değinmeye çalışacağım.

Sizler Veri Toplama hakkında ne tür deneyimler yaşadınız. Kullandığınız yöntemlerin avantaj ve dezavantajları nelerdir?

2007-10-03

Cümledeki Gereksiz Boşlukları Giderme

Bir cümle içindeki gereksiz ve fazla olarak girilen boşlukları tek boşluğa indirgemek metin ile uğraşan çoğu kişinin ihtiyacı olan bir şeydir. Kelimeler arasındaki çoklu boşluklar metni bozar. Bunu düzeltmek için C#'ta ilk aklımıza gelecek komutlar trim(), replace()'dir. Ancak trim sadece metnin başındaki ve sonundaki boşlukları atar; replace ile de bir döngü ile ancak boşlukları tek boşluğa donüştürene kadar tekrarlamak gerekecek. Bir metindeki gereksiz boşlukları atacak kodu C# ile aşağıdaki gibi yazdım(Orhan Aykut hocamın optimizasyon ile ilgili elinin değmesiyle:)). Umarım işinize yarar.

string cumle = " Günlüğümdeki yazıları nasıl buluyorsunuz? ";
char[] c = { ' ' };
string[] dizi = cumle.Split(c, StringSplitOptions.RemoveEmptyEntries);

for (int i = 0; i < dizi.Length; i++){

dizi[i] = dizi[i].Trim();

}

MessageBox.Show(string.Join(" ", dizi));

Sonuç çıktısı: "Günlüğümdeki yazıları nasıl buluyorsunuz?" olur.

2007-06-21

Ekran Görüntüsünü Kaydetme(Print Screen)

//Ekran görüntüsünü aşağıdaki C# kodu ile yakalayabilirsiniz.
Graphics grafik;
Bitmap EkranGoruntusu = new Bitmap(Screen.PrimaryScreen.Bounds.Width,screen.PrimaryScreen.Bounds.Height,PixelFormat.Format32bppPArgb);
grafik = Graphics.FromImage(EkranGoruntusu);
grafik.CopyFromScreen(Screen.PrimaryScreen.Bounds.X,Screen.PrimaryScreen.Bounds.Y,0, 0,Screen.PrimaryScreen.Bounds.Size,CopyPixelOperation.SourceCopy);
EkranGoruntusu.Save("C:\\EkranGoruntusu.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);

2007-05-05

DateTimePicker Formatı

CETURK C# forumunda datetimepicker da sadece tarih ve saat bilgisinin olmasını istiyorum tarzında sorulan soruya verilen cevaptır.

Cevap: Properties kısmında Format ı Custom yapın Custom Formatı da dd.MM.yyyy hh:mm şeklinde yapın dilediğiniz olur.

2007-05-04

Design Time/Runtime

Programımızın desing time da mı yoksa runtime da olduğunu System.ComponentModel classına ait DesignMode propertisi ile yakalayabiliriz. Bu property true yada false döndürür. true değeri programın design time da olduğunu gösterir.

2007-05-03

Number Validate

Herhangi bir yerde girilen verinizin rakamlardan oluşup oluşmadığını aşağıdaki 2 farklı yoldan elde edebilirsiniz:


1.
public bool NumberValidate(String strNumber)
{
Regex objNotNaturalPattern=new Regex("[^0-9]");
Regex objNaturalPattern=new Regex("0*[1-9][0-9]*");
return !objNotNaturalPattern.IsMatch(strNumber) &&objNaturalPattern.IsMatch(strNumber);
}

2.

public bool NumberValidate(string veri)
{
bool isValid=false;
foreach (char ch in veri)
{
if (ch <> 0x39)
{
isValid=true;
}
else
{
isValid=false;
}
}
return isValid;
}

2007-04-25

Regex Karakter Kümeleri

Karakter kümeleri ile metnin regex ifadesindeki herhangi bir karakterle eşleşmesini sağlayabiliriz. Bunun için eşleşecek karakterleri köşeli parantezler içine koyarız.

Örneğin [vw] regex'i metin içindeki v veya w karakterleri ile eşleşecektir.
Köşeli parantez içindeki karakterlerin sırası önemli değildir.

Burada bir ayrıntıyı hatırlatmak gerekir. vw ifadelerini aramak isteseydik regex köşeli parantez kullanmadan yani vw şeklinde olacaktı. Örneğin metin içinde volkswagen ve wolkswagen kelimelerinin hepsini bulmak için kullanacağımız regex [vw]olkswagen olacaktır. Kullancının kelimenin ilk harfini doğru veya yanlış yazması farketmeyecektir. Burada yine dikkat! Regex vwolkswagen yada wvolkswagen ifadeleri ile eşleşmeyecektir. İlk karakter v yada w olabilir.

Karakter kümesi olarak aralık vermek için tire - kullanılır. [0-9] ifadesi 0 ile 9 arasındaki herhangi bir karakter ile eşleşir. Birden fazla aralıkta verebiliriz. Örneğin [0-9a-fA-F] büyük-küçük harf gözetmeden tek bir hexadecimal karakter ie eşleşir. Aralık ile beraber herhangi bir karakter de belirtilebilir. [0-9a-fxA-FX] tek bir hexadecimal karakter yada X karakteri ile eşleşir.

Negatif Karakter Kümeleri

Açılan köşeli parantezden sonra şapka ^ karakteri kullanmak karakter kümesi içindeki karakterlerle eşleşmeyen sonuçları bulacaktır. n[^s] iki karakter arayacaktır : n, ve s olmayan ikinci bir karakter. n[^s] regex ifadesi insanların kelimesindeki ns ile değil nl ile eşleşecektir. En sondaki n ile eşleşmeyecektir çünkü en sondaki n den sonra ikinci bir karakter bulunmamaktadır.

Özel Karakterler ve Karakter Kümeleri

Karakter kümeleri içindeki özel karakterler (yada metakarakterler) kapanan köşeli parantez ], ters bölü \, şapka ^ ve tire - karakterleridir. Diğer özel karakterler köşeli parantez içerisinde normal karakterler gibi eşleşir ve öncesinde ters bölü \ kullanmaya gerek yoktur. Örneğin * veya + için [+*] ifadesi kullanılır.
Özel karakterleri karakter kümeleri içinde kullanırken öncesinde ters bölü \ kullanmak veya bu karakterleri özel bir anlam taşımayacağı yerde kullanmak gerekir. Örneğin [x^] ile [x\^] gerçekte aynı ifadedir. Çünkü şapka ^ sadece açılan parantezden sonra özel bir karakterdir.
Unicode karakterler karakter kümeleri içinde normal kullanıldıkları gibi kullanılır. Örneğin [$\u20AC], dolar $ veya euro € karakteri ile eşleşecektir. (euro karakterinin unicode karşılığı \u20AC 'dir)

Kaynak: www.noktalivirgul.com/Regular_Expressions.aspx

2007-04-04

Reflection

Reflection nesne bilgilerini almaya yarar. Bu bilgiler veri sınıfı ile ilgilidir. Reflection ile metod adları, nesnenin veri tipi ve constructor bilgileri alınabilir.

Reflection'ı kullanabilmek için System.Reflection namespace'ni projeye dahil etmemiz gerekir.

Type objectType = testObject.GetType();

ConstructorInfo [] info = objectType.GetConstructors();
MethodInfo [] methods = objectType.GetMethods();

// Tüm constructor'ları getirme
Console.WriteLine("Constructors:");
foreach( ConstructorInfo cf in info )
{
Console.WriteLine(cf);
}

Console.WriteLine();

// Tüm metodları getirme
Console.WriteLine("Methods:");
foreach( MethodInfo mf in methods )
{
Console.WriteLine(mf);
}

Kaynak: CoderSource

2007-03-20

static

C# 2.0 ile birlikte static sınıf tanımlamasına izin verildi.

  • Bir sınıf içerisinde bulunan metodlar static olarak tanımlanabilir.
  • Bir sınıf içerisinde bulunan alanlar static olarak tanımlanabilir.
  • Bir sınıfa ait static bir yapıcı metod (constructors) tanımlanabilir.
  • Değişmezler (constants) bilinçsiz olarak (implicit) static tanımlanmışlardır.
    Readonly referanslar açıkça belirtilmedikçe static değildirler.
  • Static bir metod içinde sadece static metodlar çağrılabilir; static olmayan metodlar çağrılamaz.
  • Bir sınıfa ait static bir yapıcı metod (constructors) tanımlanabilir.

2007-02-17

C#: VT Bağlantısı ve DataGridView

SIPARIS tablomuzda bulunan 11 kayıtı DataGridView ımızda kod ile gösterelim.

Bunun için yazacağımız kod:


string strSQL, strConn;

//Bağlantı Cümleciğimiz
strConn = "Data Source=CETURK;Initial Catalog=ithalat;uid=*;password=*";
//SQL cümleciğimiz
strSQL = "SELECT TOP 11 * FROM SIPARIS";

SqlConnection conn = new SqlConnection(strConn)

/*Bağlantımız ve SQL cümleciğimiz doğru ise bağlantıyı açıp tablomuzdan 11 kayıdı datagridview da göstersin aksi taktirde hata mesajını verecek ve en sonunda bağlantımızı kapatıyoruz.
*/
try
{
conn.Open();

SqlDataAdapter da = new SqlDataAdapter(strSQL, conn);
DataSet ds = new DataSet();
da.Fill(ds, "SIPARIS");
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "SIPARIS";
}
catch(Exception hata)
{
MessageBox.Show(hata.Message, "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
conn.Close();
conn.Dispose();
}

2006-12-26

Veri Erişimi

  • DataReader nesnesi veri kümeleri üzerinde yanlız okunabilir ve sadece ileri yönlü okuma sağlar.
  • DataReader nesnesini new metodu ile oluşturulamaz.
  • Bir DataReader nesnesi sadece tanımlanabilir.

  • Bir DataAdapter nesnesi ile, bağlantısız katmandaki değişiklikler veri kaynağına yansıtılır.
  • SQL server için olan SQLDataAdapter ile SQL server ile daha hızlı çalışabilirsiniz.
  • DataAdapter nesnesinin Fill metodu kullanılarak bir Dataset üretilebilir.

  • Dataset teknolojisi XML tabanlı olarak çalışmaktadır.
  • Dataset'e doldurduğunuz verileri WriteXml ile XML formatında kaydedebilirsiniz.

  • Offline tablodaki verileri süzmek yada sıralamak için DataTable sınıfının Select metodu kullanılır.

  • Command'ın ExecuteScalar metodu sadece tek bir kolon ve satırı geriye döndürür.

  • ADO.NET ve SQL Server ikilisi ile hem DB transaction hem de Connection Transaction yapmak mümkün.
  • Ado.Net doğrudan XML desteğine sahiptir.

  • Connection nesnesini Open metodunu kullanmadan önce Connectionın durumunu kontroledin.

  • Veritabanı olarak SQL Sever kullanıyorsanız SqlException ' la dönen hatayı birebir alabilirsiniz.

.::YASAL UYARI::.

©2004-2023 Mehmet GÜZEL, www.mehmetguzel.net

Site içeriği kaynak gösterilmek koşuluyla yayınlanabilir. Yazılan yazı ve yorumlar sadece yazı ve yorum sahiplerini bağlar.