OpenFileDialog Multi Extension Filter

by Yasin Sirkecili 6. Şubat 2010 03:34

 

OpenFileDialog nesnesini kullanırken seçmek istediğiniz dosya tipine göre aşağıdaki şekilde filtreleme yapabilirsiniz.

OpenFileDialog1.Filter = "Jpg Dosyası|*.jpg"

Fakat aynı zamanda tek bir seçenekte Jpg,Gif ve Png dosyalarının uzantılarına izin vermek isterseniz

OpenFileDialog1.Filter = "Resim Dosyası(Jpg, Png, Gif)|*.jpg;*.png;*.gif"

şeklinde Filter propertysini düzenlemeniz yeterli olacaktır. Kısacası izin vereceğiniz uzantıları ";" (noktalı virgül) ile ayırmalısınız.

 

5 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: , , , ,

C#

Makalelerimden bazıları

by Yasin Sirkecili 2. Kasım 2009 15:16

5 kişi tarafından 4.2 olarak değerlendirildi

  • Currently 4,2/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

ASP.NET | C# | Yasin Sirkecili

SmtpClient SendCompleted Event

by Yasin Sirkecili 23. Ekim 2009 12:12

System.Net.Mail namespace'i altında yer alan SmtpClient sınıfını kullanarak mail gönderme işleminden daha önce bahsetmiştim. Bu yazıda sadece SmtpClient class'ından türettiğiniz instance'in Send(); fonksiyonunun sonucunda oluşan SendCompleted event'ini inceleyeceğiz.

Basitce bir mail gönderme uygulaması yazacak olursak;

protected void Button1_Click(object sender, EventArgs e)
{
SmtpClient smtppc = new SmtpClient("mail.alanadi.com");
smtppc.SendCompleted +=
new SendCompletedEventHandler(smtppc_SendCompleted);
MailAddress frommail = new MailAddress("from@alanadi.com", "From Sender Name");
MailAddress tomail = new MailAddress(to@alanadi.com);
MailMessage yenimail = new MailMessage(frommail, tomail);
yenimail.SubjectEncoding = System.Text.
Encoding.GetEncoding("ISO-8859-9");
yenimail.BodyEncoding = System.Text.
Encoding.GetEncoding("ISO-8859-9");
yenimail.Subject = TextBox1.Text.Trim();
yenimail.Body = TextBox2.Text.Trim();
yenimail.IsBodyHtml =
false;
yenimail.Priority =
MailPriority.High;
System.Net.
NetworkCredential izin = new System.Net.NetworkCredential("from@alanadi.com", "password");
smtppc.UseDefaultCredentials =
false;
smtppc.Credentials = izin;
smtppc.Port = 587;
try
{
smtppc.Send(yenimail);
}
catch
{
ScriptManager.RegisterStartupScript(Page, typeof(string), Guid.NewGuid().ToString(), "alert('Hata Oluştu');", true);
return;
}
}
protected void smtppc_SendCompleted(object sender, EventArgs e)
{
ScriptManager.RegisterStartupScript(Page, typeof(string), Guid.NewGuid().ToString(), "alert('lletiniz gönderildi');", true);
}

Gözlemleyebildiğiniz gibi try blogu içerisinde mail gönderme işlemi başarı ile sonuçlandıktan sonra smtppc_SendCompleted event'i tetiklenecek ve bu blok içerisine yazdığınız kodlar çalışacaktır. Tek yapmanız gereken SmtpClient nesnesinden bir instance türettikten sonra SendCompleted eventini

smtppc.SendCompleted += new SendCompletedEventHandler(smtppc_SendCompleted);

şeklinde türeterek karşılık gelen ilgili fonksiyonu türetmektedir.

kolay gelsin...

5 kişi tarafından 4.0 olarak değerlendirildi

  • Currently 4/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

ASP.NET | C#

Free IP to Geographic Location

by Yasin Sirkecili 23. Ekim 2009 11:30

 

IPINFODB.COM un sundugu ücretsiz lokasyon tesbiti uygulamasını kullanarak kullanıcıların IP Adresinden bulundukları lokasyonu kolayca tesbit edebilirsiniz. Normalde böyle bir uygulama için IP2LOCATION.COM a yüklü miktarda para ödemeniz gerekebilir. Ama bunu ücretsiz olarak kullanabilirsiniz.

DataSet dset = new DataSet();
dset.ReadXml(
http://ipinfodb.com/ip_query.php);
Label1.Text = dset.Tables[0].Rows[0][
"CountryName"].ToString();
Label2.Text = dset.Tables[0].Rows[0][
"City"].ToString();

 

Ben sadece Ülke adı ve Şehir adı bilgisini aldım ancak dönen XML verisinin tamamı şöyledir;

 <Response>
  <Ip>95.70.229.81</Ip>

  <Status>OK</Status>
  <CountryCode>TR</CountryCode>
  <CountryName>Turkey</CountryName>
  <RegionCode>34</RegionCode>
  <RegionName>Istanbul</RegionName>
  <City>Istanbul</City>
  <ZipPostalCode />
  <Latitude>41.0186</Latitude>
  <Longitude>28.9647</Longitude>
  <Timezone>2</Timezone>
  <Gmtoffset>2</Gmtoffset>
  <Dstoffset>3</Dstoffset>
</Response>

Siz kendinize göre ihtiyacınız olan verileri kullanabilirsiniz.

Kullanıcılarınızı üye olurken, uçak bileti alırken, tatil sepeti kiralarken vb...  seçtiği dropdownlistlerde bulunduğu lokasyonu otomatik olarak seçili getirip şaşırtabilirsiniz :)

kolay gelsin...

4 kişi tarafından 4.5 olarak değerlendirildi

  • Currently 4,5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

ASP.NET | C#

VSTO - C# - OCR with MS Office Document Imaging 12.0

by Yasin Sirkecili 23. Ekim 2009 09:37

Herkese merhabalar;

Bugünkü konumuz printer, daktilo, fotokopi vb. kağıt halindeki çıktılardan tutunda plaka tanıma sistemlerine kadar uzanan insan hayatını kolaylaştıran en sevdiğim yapay zeka uygulamalarından olan OCR(Optical Character Recognition) uygulamasının C# ile nasıl yapılacağına basitce bakacağız. Amacımız JPG dosyasındaki text verileri tanımlayıp *.txt dosyasına aktaracak bir OCR(Optical Character Recognition) uygulaması gerçekleştirmek.

İlk olarak projemize COM objesi olan Microsoft Office Document Imaging 12.0 Type Library referansını ekliyoruz. bu referans eklendiğinde MODI adında bir namespace'in kullanılabilir olduğunu göreceksiniz. Bu API Office 2003 ile birlikte geldiğinden Office 2003 veya üstü versiyonlarla kullanabilirsiniz. Ben projemi bir ASP.NET Web uygulaması olarak gerçekleştirdim siz isterseniz Windows Application kullanarak taranan veriyi richtextbox'a aktarabilirsiniz.

uygulamamızın xhtml görünümü şöyledir;

<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<div>
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
</div>
</form>

Sadece bir FileUpload ve button kontrolü kullandığımız projenin icrası şu yönde olacaktır; Resim seçildikten sonra eğer jpg formatındaysa resmin adı değiştirilip jpgs diye bir klasöre aktarılacak daha sonra burda OCR işlemi gerçekleştirilecek.

if (FileUpload1.HasFile)
{
string uzanti = System.IO.Path.GetExtension(FileUpload1.FileName.ToLower().Replace("", "i"));
if (uzanti == ".jpg")
{
string dosyaadi = DateTime.Now.ToString().Replace(".", "").Replace(":", "").Replace("/", "").Replace("-", "").Replace(" ", "");
dosyaadi += uzanti;
FileUpload1.SaveAs(
HttpContext.Current.Server.MapPath("~/jpgs/" + dosyaadi));
System.IO.
FileStream fstream;
System.IO.
StreamWriter swriter;
try
{
MODI.
Document mdoc = new MODI.Document();
mdoc.Create(
HttpContext.Current.Server.MapPath("~/jpgs/" + dosyaadi));
mdoc.OCR(MODI.
MiLANGUAGES.miLANG_TURKISH, true, true);
MODI.
Image mimg = mdoc.Images[0] as MODI.Image;
fstream =
new System.IO.FileStream(HttpContext.Current.Server.MapPath("~/yasin.txt"), System.IO.FileMode.OpenOrCreate);
swriter =
new System.IO.StreamWriter(fstream);
swriter.Write(mimg.Layout.Text);
swriter.Close();
fstream.Close();
}
catch
{
ScriptManager.RegisterStartupScript(Page, typeof(string), Guid.NewGuid().ToString(), "alert('Hata olutu');", true);
}
}
else
{
ScriptManager.RegisterStartupScript(Page, typeof(string), Guid.NewGuid().ToString(), "alert('.jpg formatında bir dosya seçiniz.');", true);
}
}
else
{
ScriptManager.RegisterStartupScript(Page, typeof(string), Guid.NewGuid().ToString(), "alert('Dosya seçmediniz.');", true);
}

Kodlarımızı açıklayacak olursak;

İlk olarak System.IO.Path sınıfı altındaki getextension fonksiyonundan faydalanarak aktarılan dosyanın .jpg uzantısına sahip olup olmadığını kontrol ediyoruz. Daha sonra bu dosyayı jpgs adında oluşturduğumuz klasöre aktarıyoruz.(Dosya adının çakışmasını engellemek için tarihe göre isim değiştiriyoruz) Sonrasında Jpg file içerisinde taranan karakterleri *.txt dosyasına aktarmamızı sağlayacak olan filestream ve streamwriter classlarından birer instance yaratıyoruz.

MODI.Document mdoc = new MODI.Document();

ile mdoc adında MODI.Document classından OCR işleminde kullanacağımız yeni bir instance türettik.

mdoc nesnesinin Create fonksiyonunu kullanarak parametre olarak taranacak jpg dosyasının yolunu belirtiyoruz.

mdoc nesnesinin sahip olduğu en önemli fonksiyonumuz olan OCR fonksiyonuna gönderdiğimiz parametrelerle tarama işleminin sonuçlanmasını sağlıyoruz. Burdaki parametrelere ait açıklamalar şöyledir;

1 -) LangId : MODI.MiLANGUAGES enum değişkeninde tanımlanan karakter setlerinden size uygun olanı seçmenizi sağlar.
2- ) OCROrientImage : Sayfanın yatay veya dikey olup olmadığının API tarafından algılanmasını sağlayan boolean tipli bir değerdir.
3- ) OCRStraightenImage :  API tarafından image üzerindeki karakter tanımayı engelleyici eğimlerin otomatik olarak düzenmesine karar veren  boolean tipli değişkendir.

daha sonra MODI.Image tipinde oluşturduğumuz mimg nesnemize mdoc içerisindeki resimlerden istediğimizi aktarıyoruz.(Biz tek bir resim üzerinde işlem yaptığımızdan 0 index'ine sahip resmi aktardık)

bu işlemleri tamamladıktan sonra taranan ve karakter haline çevrilen verileri yasin.txt dosyasına yazarak filestream, streamwriter nesnelerinden türettiğimiz instance'ları Close(); methoduyla sonlandırarak jpg file içerisindeki karakterlerin yasin.txt dosyasına aktardığını gözlemleyebiliriz.

OCR işlemlerinin en basit hali bu şekilde uygulanabilir, dilerseniz siz daha detaylı OCR uygulamaları geliştirebilirsiniz.

kolay gelsin...

 

5 kişi tarafından 4.6 olarak değerlendirildi

  • Currently 4,6/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

ASP.NET | C#

Colourful DropDownList

by Yasin Sirkecili 9. Aralık 2008 23:50
 

Mail ile gelen bir soruya cevap olarak yazdığım üzere...
DropDownList içerisine System.Drawing.Color structındaki renk adlarını ve değerlerinin nasıl aktarılabileceğini ve ilgili renklerin itemlara nasıl verilebileceğini aşağıdaki kısa kod bloğunu kullanarak yapabilirsiniz. User Profile eylemlerinde kullanıcının kendi background rengini seçebilmesi adına güzel bi uygulama olabilir. kolay gelsin...

protected void Page_Load(object sender, EventArgs e)
{
string[] renkler = System.Enum.GetNames(typeof(System.Drawing.KnownColor));
Array degerler = System.Enum.GetValues(typeof(System.Drawing.KnownColor));


for (int i = 0; i < renkler.Length; i++)
  {
     ListItem item = new ListItem(renkler[i].ToString(),degerler.GetValue(i).ToString());
     item.Attributes[
"style"] = "background:" + renkler[i];
     DropDownList1.Items.Add(item);
  }

}

5 kişi tarafından 4.6 olarak değerlendirildi

  • Currently 4,6/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: , , , ,

ASP.NET | C#

Profile Groups in Web Applications

by Yasin Sirkecili 9. Aralık 2008 15:12
ASP.NET 3.5 Web Aplikasyonlarında IDE ProfileCommon sınıfından Profile nesnesini türetmediği için ASP.NET Web Site larda olduğu gibi Profile.GroupName.PropertyName şeklinde grup içindeki özelliklere erişmeniz mümkün değildir. Bu durumu ya profile yapısı içinde bir class inherit ederek kendiniz yapılandırıp çözümleyebilirsiniz. Yada

<group name="iletisim">
<add name="ad" defaultValue="yasin" allowAnonymous="true"/>
<add name="soyad" defaultValue="sirkecili" allowAnonymous="true"/>

<
add name="telefon" defaultValue="0532XXXYYZZ" allowAnonymous="true"
/>
</
group
>

şeklindeki bir grup özelliği için

Label1.Text =
HttpContext.Current.Profile.GetProfileGroup("iletisim").GetPropertyValue("telefon");

ifadesini kullanıp erişebilirsiniz.

Not: Profile yapılandırması için daha sonra detaylı bilgi yazacağım.

5 kişi tarafından 4.6 olarak değerlendirildi

  • Currently 4,6/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

ASP.NET | C#

Value and Reference Types

by Yasin Sirkecili 22. Kasım 2008 20:49

Değer Tipleri ve Referans Tipleri  C# Değer tipi ve referans tipi olmak üzere iki ayrı değişken yönetimi mevcuttur. 

  • Değer tipleri programın çalışma zamanında değerleri ile birlikte belleğin stack bölgesinde türü ve içeriği ile saklanan değişken türüdür. Esnekliği yüksektir.

  • Referans tipleri ise belleğin Heap bölgesinde saklanan ancak bellekteki yerinin stack bölgesinde 4 byte olarak tanımlandığı değişken türüdür. Bu 4byte = 32 bit lik referans boyutu işletim sistemine bağlıdır. Eğer 64 Bit bir işletim sistemi kullanıyorsanız stack bölgesinde heap bölgesindeki herhangi bir değişkeni referans eden pointer değerinin boyutu 8 byte yani 64 bit olacaktır.

  Değer tiplerinin aşağıdaki örnekte olduğu gibi birbirine eşitlenmesi kopyalama yöntemi ile gerçekleştiğinden birbirinden bağımsızdırlar.

int i1 = 5;
int i2 = i1;
Response.Write(i2.ToString()); // 5


dediğimizde stack bölgesindeki i1 değişkeninin içeriği yine stack bölgesinde oluşan ikinci değişkenimiz olan i2 nin içeriğine kopyalanır. Bu durumda i1 değişkeninin değerinin değişmesi i2 değişkenini etkilemez.

 Değer tipleri genellikle sınırları belli olan değişken türlerini içerir. Yani Stack bölgesinde saklanan bir değişkenin bellekte kapladığı alan her daim sabittir. Ancak referans tiplerinde bu durum 32 bitlik bir OS için stack bölgesine 4 byte olarak yansırken tanımlanan değişkenin boyut sınırları bilinmediğinden heap bölgesinde ilgili değişkene ait boyut tahmin edilemez.

 string y = “yasin”;
 
string s = “sirkecili”; 

Şeklinde yapılan bir tanımlamada string değişken türü System.String sınıfından gelen bir referans tipi olduğundan belleğin stack bölgesinde iki farklı değişken için 4byte ,4byte olmak üzere iki farklı alan tanımlanır. Heap bölgesinde ise y değişkeni 10byte s değişkeni ise 18 byte yer kaplar.

 Bunun ölçümünü ; 
string y = "yasin";
string s = "sirkecili";
char[] bar = y.ToCharArray();
char[] bar2 = s.ToCharArray();
Response.Write(Convert.ToString((bar.Length * 16 /8)) + " byte <br>");
Response.Write(Convert.ToString((bar2.Length * 16 / 8)) + " byte"); 

Şeklinde yapabiliriz. Char veri tipi 16 bit yani ve bir byte 8 bittir. Bu denklem yardımıyla istediğimiz string türününün kaç byte olduğunu hesaplayabiliriz.  

  Aşağıdaki tabloda c# dilindeki değişkenlere ait türleri ve hangi türlerin hangi tipe ait olduğuna dair bilgi bulabilirsiniz.

     

Tip

Tür

İsim

Boyut(bit)

Açıklama

Değer Sbyte Signed byte 8 İşaretli byte
Değer Byte Unsigned Byte 8 İşaretsiz byte
Değer Short 16bit Signed Integer 16 İşaretli tam sayı(16bit)
Değer ushort 16bit UnSigned Integer 16 İşaretsiz tam sayı(16bit)
Değer İnt 32 bit signed Integer 32 İşaretli tam sayı 32 bit
Değer uint 32 bit unsigned Integer 32 İşaretsiz tam sayı 32 bit
Değer Long 64 bit signed Integer 64 İşretli 64 bit tam sayı
Değer ulong 64 bit unsigned Integer 64 İşretsiz 64 bit tam sayı
Değer Float 32 bit ondalıklı 32 32 bit İşaretli ondalıklı l sayı (7 haneli)
Değer Double 64 bit ondalıklı 64 64 bitİşaretli ondalıklı sayı (15-16 haneli)
Değer Decimal 128 bit real 128 128 bit İşaretli ondalıklı sayı (virgülden sonra 28 hane duyarlı)
Değer Bool Boolean 8 True yada false
Değer Char Karakter 16 Unicode karakterler
Referans String Karakter kümesi Belirsiz Text içerikli veriler.
Referans Object Tür bağımsız ana nesne Belirsiz Tüm türlerin üretildiği Tür bağımsız değişkendir.
 

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

C#

C# & Fibonacci

by Yasin Sirkecili 22. Kasım 2008 20:48

Forumda sorulan bir soru için yazdığım cevap: Fibonacci dizisini c# ile nasıl kısayoldan bulunabileceği...

ArrayList arys = new ArrayList();
arys.Add(1);
for (int
i = 1; i <= arys.Count; i++)
{
if
(arys.Count < 2)
{
arys.Add(1);
}
else
{
arys.Add(Convert.ToInt32(arys[i - 1]) + Convert
.ToInt32(arys[i - 2]));
if
(arys.Count == 20)
{
listBox1.Items.AddRange(arys.ToArray());
break
;
}
}
}

1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4184,6765,10949,

ben ilk 20 terimini buldum siz isterseniz çoğaltabilirsiniz.

6 kişi tarafından 4.5 olarak değerlendirildi

  • Currently 4,5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

C#

C# 3.0 Test Sürüşü - 1 (Variable - Implicity typed local variables)

by Yasin Sirkecili 22. Kasım 2008 20:48

C# 3.0 da artık tür belirtmeksizin değişken tanımlamamıza olanak sağlayan yenilikler mevcut. Ancak bu değişkenlerin özelliği object değişkenler gibi referans tipli değişkenler değildir. Bunun yerine değeri atanırken tipinin belirkendiği değişkenlerdir. Bu özelliği JavaScriptten hatırlayacaksınız.

örneğin:

var deger = "yasin"; // string tipinde deger adında bir değişken yaratmış oldunuz.
var deger2 = 4 // integer tipinde deger2 adında bir değişken tanımlamış oldunuz.

gördüğünüz gibi var adıyla değişkenin valuesune bakarak değişkene değer aktarılabiliryor. Aslında bu tarz basit bir eylemi bi kaç ay önce bir projede db ile yaptığımız etkileşimler esnasında ihtiyaç duyup yazmıştım. Meğer kolayı varmış :)  (Radyonun resimlisi benim aklıma gelmişti sendromu) :) herneyse konumuza dönecek olursak var değişken tanımlamasında yukarıda da gödüğünüz üzere değişkenin değerinin türüne bakaraktan değişkenin tipini belirliyor yani eğer değişkene değer atamazsanız

örneğin;

var yasin; // değeri olmadığını için türünü belirleyemeyecek ve hata verecektir.

bununla beraber eğer değişkene null değerini atarsanız yine aynı hatayı verecektir.

var yasin2 = null // HATA !!


Bir noktaya daha değinmek gerekirse

var nesne 123 // nesne değişkenim şuanda integer tipinde;
nesne = "yasin sirkecili"; // HATA !! nesne değişkenimiz oluşturulurken integer tipinde olduğundan tekrar değer atayıp tipini değiştiremezsiniz.

2 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

C#

Powered by BlogEngine.NET 1.4.5.0
Theme by Mads Kristensen

Yasin Sirkecili


Yasin Sirkecili
Software Developer
MSN & Mail: yasin@sirkecili.com

Bağlantılar

Calendar

<<  Şubat 2012  >>
PaSaÇaPeCuCuPa
303112345
6789101112
13141516171819
20212223242526
2728291234
567891011

View posts in large calendar

Son Yorumlar

Bağlantılar 2