İlaç Takip Sistemlerinin, doğuşu gelişmesi ve son hali.
İstiklal caddesi, Asmalı Mescit, Tepebaşı, Galatasaray, Nevizade, Cihangir, Gümüşsuyu, Kurtuluş, Elmadağ, Cezair sokak, Fransız sokağı, Sıraselviler, Firuzağa, Hayriye cad., İmam Adnan sok., Yeşil çam sok., Büyük Parmak Kapı sok., Tam neresi iyi bi öğrenmeye, onlarca yıldır baktığım Taksim’e artık sadece bakmaya değil görmeye karar verdim.
Geç mi kaldım?
Daha yeni başlıyorum. Sırada, Sur içi İstanbulu, Üsküdar, Beşiktaş, Boğaz’ın iki yanı, Haliçin iki yanı ve adalar var.
Bi yerden başlamak gerek.
Bu makalemde sizlere c# yardımı ile varolan bir microsoft word dokümanını nasıl açabileceğinizi ve yeni bir Microsoft word dokümanını nasıl oluşturabileceğinizi anlatmaya çalışacağım.
Bu işlem için öncelikle bir Windows Application Project oluşturalım ve ismini de wordapp olarak verelim.Bu işlemden sonra karşımıza gelen Windows Form nesnesi üzerine iki adet button ve bir adet de openfiledialog nesnesi yerleştirelim. Bütün bu işlemleri yerine getirdikten sonra formumuzun görünümü Şekil 1′deki gibi olacaktır.
Şekil 1. Form Görünümü
.NET üzerinden Microsoft Word ile ilgili işlemleri yapabilmemiz için .NET Project’imize Microsoft Word 11.0 Object Library isimli COM referansı eklememiz gerekmektedir. Bunun için Solution Explorer penceresi üzerinde bulunan References seçeneği üzerinde sağ tuşa tıklayalım ve Add Reference seçeneğini seçelim. Karşımıza gelen pencerede COM sekmesini seçip buradan Microsoft Word 11.0 Object Library referansını bulup OK tuşuna basalım. Böylece projemiz için gerekli olan COM referansı projemize eklemiş olacağız. Bu durum Şekil 2′de gösterilmiştir.
Şekil 2. Referans Ekleme
Programımızı yazmaya başlamadan önce formumuzun kod kısmına geçerek aşağıdaki namespace’i kodumuza eklememiz gerekir.
using Microsoft.Office.Interop.Word;
Bu işlemden sonra programımızı yazmaya başlayabiliriz. Öncelikle Form1 classımız içerisinde Application class türünde global bir nesne tanımlamalıyız.
ApplicationClass uygulama = new ApplicationClass();
Bundan sonra “Word Dokumanı Aç” etiketli butonun click event’ine aşağıdaki kod parçası yazılmalıdır.
private void button1_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
//Açılacak Olan Dosya Adını gösteren değişken
object dosyaadi = openFileDialog1.FileName;
//Açılan dokumanın salt okunur olup olamayacağını belirleyen değişken
object sadeceokunur = false;
//Açılan dokumanın gösterilip gösterilmeyeceğini belirleyen değişken
object gorunur = true;
object missing = System.Reflection.Missing.Value;
//Word Programını görünür yapan satır
uygulama.Visible = true;
Document dosya = uygulama.Documents.Open(ref dosyaadi, ref missing, ref sadeceokunur, ref missing, ref missing, refmissing, ref missing, ref missing, ref missing, ref missing, ref missing, ref gorunur, ref missing, ref missing, ref missing, refmissing);
dosya.Activate();
//Açılan dokumanın ilk satırına parametre olarak gönderilen texti yazar
uygulama.Selection.TypeText(“Merhaba Dünya”);
//Bir alt satıra geçmenizi sağlar
uygulama.Selection.TypeParagraph();
//Sıradaki Satıra Tarihi ekleyen method
uygulama.Selection.InsertDateTime(ref missing, ref missing, ref missing, ref missing, ref missing);
uygulama.Selection.TypeParagraph();
}
}
Yukarıdaki kod yardımı ile seçtiğimiz bir word dokümanını c# yardımı ile açmış oluyoruz. Yukarıdaki kod da missing isimli parametreler dikkatinizi çekmiş olmalı. .NET’de com nesnelerine erişmek için opsiyonel olan parametreleri simüle etmede System.Reflection.Missing.Value değeri kullanılabilir. Ben de burada bir önceki cümlede anlattığım nedenle missing isimli değişkeni kullandım.
Şimdi de yeni bir word dokumanı oluşturalım. Bunun için de “Word Dokumanı Oluştur Butonunun” click event’ine aşağıdaki kodlar yazılmalıdır.
private void button2_Click(object sender, EventArgs e)
{
object missing = System.Reflection.Missing.Value;
//Yeni dokuman oluşturuluyor
Document dosya = uygulama.Documents.Add(ref missing, ref missing, ref missing, ref missing);
uygulama.Visible = true;
dosya.Activate();
//Yeni dosyadaki hizalamanın ortada olması sağlanıyor
uygulama.Selection.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphCenter;
//Yazı Koyu yapılıyor
uygulama.Selection.Font.Bold = (int)WdConstants.wdToggle;
// Yazı dokumana yazdırılıyor
uygulama.Selection.TypeText(“İlk Dokuman”);
}
Bu makalemde sizlere .NET Yardımı ile bir word dokümanının nasıl açılabileceğini ve yeni bir word dokümanının nasıl oluşturulabileceğini anlatmaya çalıştım. Bir sonraki makalede görüşmek üzere.
Kaynaklar:
1. csharpcorner
| Xml Ile Adres Defteri | ||||||||||||||||
| XML(Extensible Markup Language) dilinde veriler bazı işaretlerle (etiket) işaretlenirler. Örneğin bir HTML kodunda bir başlık yazısı <h1> etiketi ile işaretlenir. Sonuç olarak bir belgedeki verileri işaretlemeye yarayan dillere işaretleme dilleri denir.
W3C (World Wide Web Consortium) organizasyonu tarafından tasarlanan XML , kişilerin kendi sistemlerini oluşturabilecekleri, kendi etiketlerini tanımlayarak çok daha rahat ve etkin veri haznesi yapabilecekleri ve bu belirlenen etiketleri kendi yapıları içerisinde standardize edebilecekleri esnek, genişleyebilir ve kolay uygulanabilir dildir. Çok farklı tipteki verileri orjinal formatlarında tek bir havuzda tutabilen XML, bilgiye hızlı, kolay ve ortamdan bağımsız olarak erişebilme imkanı sunar. Günlük yaşantımızda kullanmakta olduğumuz verilerin %80’ini oluşturan ve “unstructured” olma özellikleri nedeniyle kendi bulundukları medya dışında veri özelliklerini koruyamayan (kelimeişlem, elektronik tablo çıktıları, PDF dokümanları, ses,resim vb) farklı tipteki verilerin, oryantasyona gerek duymadan hiyerarşik bir yapıda kullanılabilmelerine olanak vermekte ve bu verilerin hızlı bir şekilde sorgulanabilmelerini sağlamaktadır. Öncelikle veri transferinin kolaylaşmasını ve verinin içerik bilgisiyle saklanabilmesini hedefleyen XML, içerik ve sunum bilgilerini birbirinden ayırır. Bu özelliği ile de HTML”den farklılaşır XML in diğer bir özelliği ise farklı platformlar arasında veri taşınabilmesine imkan sunmasıdır. Örnek olarak bir adres defteri yapıp inceleyecegiz. Uygulamamıza system.xml namespaceini import edeceğiz. Yarattıgımız XML dosyamız
|
String veri türleri hakkında yazmayı düşündüm. Hangi konulardan bahsediyim diye bakarken, şöyle bir yazı buldum.
Yıllardır bilgisayarlar kullanıcılarla iletişim kurmak için yazıyı kullanırlar. Programlama dillerinde karakter kelimesi, bir harf, sayı, noktalama işareti ya da bir sembol anlamına gelir. String kelimesi ise karakterlerin yan yana gelerek oluşturdukları dizi anlamına gelir. C# Dilinde string bir anahtar kelimedir. String türünde bir değişken tanımlarken aşağıdaki gibi yazarız.
string Yazi;
Burada Yazi adında, string türünde bir değişken tanımlaması yapılmıştır ya da başka bir deyişle, Yazi string bir değişkendir.
C#taki string veri türü .net Framework içerisindeki System.String sınıfının bir aliasıdır yani string yazmakla System.String yazmak aynı şeydir.
Yani aşağıdaki gibi de string değişken tanımlaması yapılabilir.
System.String Yazi;
Eğer programımızın üst kısmında using direktifi ile
using System;
yazmışsak, başındaki System. ifadesini yazmayabiliriz. Bunu zaten daha önceki yazılardan biliyorsunuz.
String Yazi;
Şimdi burada bir karışıklık oldu. Eğer usnig direktifi ile System isim uzayı direktifi yazılmışsa büyük harfle yazılan String yeterlidir ama C#ta bir veri türü olan ve küçük harfle yazılan string kelimesi de kendi başına System.String anlamına gelen bir alias olduğundan aşağıdaki gibi bir ifadeyi yazmak yanlış olur.
System.string Yazi; //Yanlış oldu.
Çünkü string kelimesinin karşılığı olan System.String ifadesini yukarıdaki ifadede yerine yazarsak
System.System.String Yazi; //Yanlış oldu.
yazmış oluruz. Tabi ki böyle bir ifade yoktur, çalışmaz.
Şimdi string türünde bir değişken nasıl tanımlanır öğrendiğimize göre değer ataması yapalım.
Yazi = "C#Türkü çok seviyorum.";
Yukarıdaki ifadenin sağındaki değere string literal denir. Bir string literal sıfır ya da daha fazla karakterden oluşur. Karakterin tanımını yukarıda yaptığımıza göre içinde neler bulunabileceği de açıktır: Harf, rakam, noktalama işareti ayda sembol. Dikkat ederseniz bir string literal çift tırnak arasına yazılır. Bu durumda string literali başlatan ve bitiren çift tırnak işaretleri string ifadenin kendisine dâhil değildir.
Yazı dilinde noktalı virgül, soru işareti gibi işaretler çift tırnakların içine yazılır. Ama C#ta noktalı virgül atama işlemini bitiren işarettir ve en sona yazılır. Karıştırmamak gerekir.
Bir string literal tek satır olmak zorundadır. Aşağıdaki atama işlemi çalışmayacaktır.
Yazi = “C#Türkü çok
seviyorum.”; // Yanlış oldu.
Tamsayılar yazısında da anlattığımız gibi, string türü değişkenlere de tanımlama esnasında ilk değer ataması yapabiliriz.
string Yazi = “C#Türkü çok seviyorum.”;
Bir stringi ekranda göstermek için daha önceden de bildiğimiz Console.Write ya da Console.WriteLine yöntemlerini kullanabiliriz.
Console.WriteLine(Yazi);
Bu ifade konsolda aşağıdaki gibi bir çıktı verecektir.
Çift tırnak işaretleri, ekranda görünmedi. Çünkü onlar string ifademizin bir parçası değildir. Bir değişken tanımlaması yapmadan da bir string ifadeyi direkt Console.Write ya da Console.WriteLine yöntemlerine geçebilirsiniz.
Console.WriteLine(“C#Türkü çok çok seviyorum”);
Console.WriteLine ile tamsayıları gösterebildiğimiz öğrenmiştik. Şimdi de string ifadeleri gösterebildiğini öğrendik. Bunu yapması mümkündür, çünkü Console.WriteLine yönteminin aynı isimde birden çok sürümü vardır. Aynı yöntemin birden çok sürümleri olmasına yöntemlerin aşırı yüklenmesi denir. Başka bir yazıda bu meseleyi anlatacağız.
Aşağıdaki ilginç örneği dikkatle inceleyelim.
using System;
class stringler
{
static void Main()
{
string A, B, C;
A = “Merhaba, “;
B = “Dünya”;
C = A + B;
Console.WriteLine(C);
Console.ReadLine();
}
}
Ekran çıktısını incelersek çok temel bir örnek, ama programda ilginç bir yer var. 3 tane değişken tanımladık. İlk 2 tanesine değer ataması yapma işlemi daha öncekilerle aynı, sadece sayı değil de yazı kullandık. 3. değişkene değer ataması yapma işlemi biraz ilginç görünüyor. Çünkü iki tane yazı arasında toplama işlemi yapmaya çalışyıoruz.
Bu ne anlama geliyor? Artı işareti iki tane string ifadeyi birleştirir. Programı çalıştırdığımızda aşağıdaki çıktıyı görürüz.
Merhaba dünya cümlesi çok meşhur bir programcı selamıdır. 1978 yılında C Programlama Dili kitabının yazarları Brian W. Kernighan ve Dennis M. Ritchie tarafından ilk defa kullanılan bu ilk yazılan programın dünyaya merhaba demesi olayı gelenek haline geldi.
Ama Kernighan ve Ritchie string birleştirme örneğini yapamadılar, çünkü standart C dilinde string birleştirme yoktur, hatta string yoktur.
Değişik işlemler için aynı operatörün kullanılması, mesela toplama operatörü, operatörlerin aşırı yüklenmesi olarak bilinir. Bu meseyi de yine başka bir yazıda anlatacağız.
Dikkat ederseniz A değişkenine bir string literal ataması yaptık ama virgülden sonra bir boşluk bıraktık. Çünkü 2 tane stringi birleştirdiğimizde arasına kendisi boşluk koymaz bunu bizim belirtmemiz lazım.
Stringlerle de yine artı eşittir operatörünü kullanabilirsiniz.
string Yazi = “Bu bir yazıdır.”;
Yazi += “Bu da bir yazıdır.”;
Artı eşit operatörü, ilk string ifadenin sonuna ikinci string ifadeyi ekler. Bunlardan başka diğer operatörler stringlerle kullanılmaz.
String birleştirme işlemi, eğer çok uzun bir string ifadeyi bir değişkene atayacaksak çok işlevseldir.
string Kavgam =
“Kader beni, iki Alman devletinin tam sınırları üzerinde bir kasabada,” +
“Braunau am Inn’de dünyaya getirdi. Alman olan Avusturya, büyük Alman vatanına” +
“tekrar dönmelidir. Hem bu birleşme, iktisadi sebeplerin sonucu olmamalıdır. ” +
“Bu birleşme, iktisadi bakımdan zararlı olsa bile, mutlaka olmalıdır.” +
“Aynı kan, aynı imparatorluğa aittir. “;
Aynı zamanda string literaller ile string değişkenlerin bir kombinasyonu olarak string birleştirmeyi kullanabilirsiniz.
string programlama_dili = “C# “;
Console.WriteLine(“Ben ” + programlama_dili + ” programlamayı çok seviyorum.” + ” Ya sen?”);
Yukarıdaki birleştirilmiş ifade aslında aşağıdaki şekilde ayrı ayrı da yazılabilir.
string programlama_dili = “C# “;
Console.Write(“Ben”);
Console.Write(programlama_dili);
Console.Write(” programlamayı çok seviyorum.”);
Console.WriteLine(” Ya sen?”);
Dikkat ederseniz ilk dört ifadede Console.Write kullanırken sonuncusunda Console.WriteLine kullandık. Çünkü Console.Write yöntemi imleci alt satıra geçirmez.
Yukarıda yazdığımız her iki örneğin de ekran çıktısı aşağıdaki şekildedir.
System.String sınıfının Length diye bir özelliği vardır. Yöntem ve alan gibi özellik de bu cümlede teknik terim olarak kullanıldı. Özellikler de alanlar gibidir. Başka bir yazıda alanlar ve özelliklerden bahsedeceğiz. Şimdilik sadece Length özelliğinin ne işe yaradığını bilelim. Bir string ifadenin karakter sayısını bize verir.
Kavgam.Length
ifadesi bize 327 sayısını verir.
C#ta stringleri çift tırnak arasına yazarız. Eğer string literalin kendi içinde çift tırnak varsa onu nası yazabiliriz? Mesela aşağıdaki gibi bir string literali ekranda göstermek istiyoruz.
Atalarımız boşuna söylememiş “sakla samanı, gelir zamanı” diye.
Bu tür özel karakterlerin kullanılması programlama dillerinde her zaman problem olur. C# çözümü C ve C++ dillerinden almıştır. Bir string literal çift tırnak içeriyorsa, çift tırnakların soluna bir ters bölü işareti koymalıyız.
string Yazi = "Atalarımız boşuna söylelemiş \"sakla samanı, gelir zamanı\" diye";
Bu ters bölü işareti burada kaçış karakteri olarak görev yaptı. Kaçış karakteri sağındaki özel işaretin gerçek anlamında kullanılmasını engeller.
Peki, ters bölü işaretinin kendisini yazı içerisinde nasıl kullanırız? Yazı dilinde belki çok fazla kullanılmayan bir işaret ama MS-DOS ya da Windows programlarında dizin isimlerini ayırmada ters bölü işareti kullanılır. Bu ters bölü işaretinin çok acıklı bir hikâyesi var. UNIX işletim sisteminde dizin isimleri normal bölü işareti ile ayrılır, ters bölü işaretiyle değil. C dilinde de kaçış karakteri olarak kullanılma sebebi hiçbir özel anlamı olmamasıdır. MS-DOS 1.0 işletim sisteminde ise UNIX benzeri hiyerarşik bir dizin yapısı olmadığından normal bölü işareti komut satırı argümanı olarak kullanıldı.UNIX işetim sisteminde komut satırı argümanlarının solunda çizgi vardır. MS-DOS 2.0 işletim sisteminde hiyerarşik dosya yapısı gelince, C dilinde problem olacağı hiç akıllarına gelmedi ve dizin isimlerini ayırmakta normal bölü işareti yerine ters bölü işareti kullanıldı.
Bir string literal içerisinde eğer ters bölü işareti varsa yan yana iki tane kullanırız.
string Dizin = “C:\\Makaleler\\String Makalesi\\Metin.doc”;
Şimdi bunu ekrana yazdırıp çıktısına bakalım.
Artık MS-DOS ya da Windows programlarında ters bölü işareti kullanma zorunluluğumuz yok, onun yerine normal bölü işareti de kullanabilirsiniz.
string Dizin = “C:/Makaleler/String Makalesi/Metin.doc”;
Bilgisayarın içerisinde bir string literalin karakterleri sayılarla ve nihayetinde bitlerle saklanır. Uzun yıllar, bir çok bilgisayar ASCII (American Standard Code for Information Interchange – Bilgi Değişimi İçin Amerikan Kod Standardı) dediğimiz bir karakter kodlaması kullandı. ASCII 7-bit kodlardan oluştuğu için toplam 128 (27) çeşit karakteri gösterebilir.
Eğer standart Amerikan İngilizcesi klavyesi kullanıyorsanız, Üst Karakter Tuşuna (Shift Tuşu) bağlı olarak (harf, sayı ya da sembollerden) 47 tane tuştan 94 tane karakter oluşturabilirsiniz. Boşluk tuşu ayrı bir ASCII karakteri ile temsil edilir. ASCII ayrıca, yazıda gösterilmeyen, yazının nasıl gösterileceğini kontrol eden 33 tane kontrol karakteri sağlar. Bunlardan sadece bazıları günümüzde kullanılıyor. Satır başı tuşu, Sonraki satıra geçme tuşu (Bu ikisi imlecin bir sonraki satırın başına gitmesini sağlar), Geri Al Tuşu, Tab Tuşu, ESC tuşu. Bütün ASCII karakterleri klavyeden Ctrl tuşunu harf ve sembol kombinasyonları ile kullanarak oluşturulabilir. Yani 128 tane ASCII kodunu klavyeden yazabiliriz.
Fonksiyon tuşları (F1,…, F12), yön tuşları ve imleç hareket tuşları biraz farklıdır. Bunlar ASCII kodu üretmezler.
Pratikte kişisel bilgisayarlar ASCII tarafından sağlanan 128 karakteri de içeren yazı karakterlerini göstermek için 8-bit kullanırlar. Bu 8-bit kodlamaya ise genişletilmiş ASCII karakter kodlama seti denir.
Maalesef, genişletilmiş ASCII, tek standart değildir. Orijinal IBM Bilgisayar çizgi çizmek ve basit matematik semboller için ek rarakterler de kullandı. Windows ise Batı Avrupa dillerinde kullanılan sembolleri göstermek için Latin 1 adlı bir kodlamayı da destekler. Bir çok ülkede standart komiteleri kendi karakter kodlamalarını oluşturdular. Tabi ki bunların içinde Latin olmayan Arapça, İbranice, Yunanca, Kiril (Rusça) da var.
Sonuç karışıklık ve belirsizlik oldu. Eğer başka bir ülkeden ya da Apple Machintosh gibi başka platformlardan gelen e-posta mesajları almışsanız ve bunlarda anlamsız karakterler görmüşseniz bunların sebebi iki değişik 8-bit karakter kodlamasıdır.
1980lerin başında bu problemlere bir çözüm bulmak için çalışmalar yapıldı. Sonuç Unicode oldu. Unicode; Çince, Japonca ve Korece gibi şekilsel alfabeler de dâhil, bilgisayar iletişiminde kullanılan bütün dillerin karakterlerini gösterebilecek şekilde 65,536 (216) tane karakter içeriyor, 16-bit kodlama kullanıyor. Unicode karakterlerinin ilk 128 karakteri yine ASCII’nin aynısıdır. İkinci 128 tanesi ise Latin 1 karakterlerinin aynısıdır. Unicode hakkında daha fazla bilgi http://www.unicode.org adresinde mevcuttur. Unicode Standart Verison 3.0 adlı kitabın online sürümüne de yine bu siteden ulaşabilirsiniz.
8-bit karakter kodlamalarının yerini 16-bit Unicode karakterlere bırakması için uzun bir yol var. Ama bazı programlama dilleri, mesela C#, stringleri 16-bit Unicode olarak tutuyor. Unicode ile aşağıdaki gibi bir string ifadeyi rahatlıkla yazabilirsiniz.
Hem Yunan alfabesi hem de derece işareti ASCII karakter tablosunda yoktur.
Yunan harflerini Yunanca klavye ile rahatlıkla yazarsınız, ama derece işareti Yunan klavyeside yoktur. Genellikle, bir Unicode karakteri string içerisinde kullanabilmek için karakteri Unicode standardı sürüm 3.0 şekilde yazmak lazım ya da http://www.unicode.org/charts adresindeki şekilde ve bir ters bölü şareti daha sonra küçük ya da büyük harflerle U ya da X koyduktan sonra 4-basamak hex karakter kodu yazarak gösterilir.
string Angle = “The angle \u03B1 equals 60\u00B0″;
İlginçtir ama \u ve 4-basamak hex karakter kodlarını değişken isimleri diğer belirteçlerde kullanabilirsiniz. bu konuda daha fazla bilgi için C# Language Specification, 2.4.2 özellik dokümanına bakabilirsiniz.
C# ayrıca C dilinden aşağıdaki kaçış durumlarını da miras almıştır.
| Kaçış Karakterleri | Unicode Kodlaması | Karakter İsmi |
| \0 | \u0000 | Null |
| \a | \u0007 | Uyarı (beep) |
| \b | \u0008 | Geri al Tuşu |
| \t | \u0009 | Tab |
| \n | \u000A | Yeni Satır |
| \v | \u000B | Dikey Tab |
| \f | \u000C | Form besleme |
| \r | \u000D | Satır başı |
| \” | \u0022 | Çift Tırnak |
| \’ | \u0027 | Tek Tırnak |
| \\ | \u005C | Ters Bölü İşareti |
Örneğin aşağıdaki ifadede ekrana yazı gösterirken \a karakterine gelince hoparlörden beep sesi çıkar ve devam eder. \a sadece konsolda geçerlidir. \v ve \f ise sadece yazıcıda geçerlidir.
Console.WriteLine(“Uyarı sinyali ver \a ve devam et.”);
ASCII kodlamasının çıkış kaynağı daktiloda kullnılan karakterlerdir. Mesela \r ve \n işlemini ancak daktilo ile anlayabiliriz. \r Satır başı kodu, yazma kafasını satırın başına getirir. \n ise yazma kafasını bir sonraki satıra geçirir. \n ve \r birlikte kullanıldığında bir sonraki satırın başına gitmiş oluruz. Text dosyalarda bu işlemler olmaz, platform uyumsuzluğu vardır. MS-DOS ve Windows platformlarında text dosyalarda bütün satırlar satır başı ve yeni satır kodlarıyla sonlanır. UNIX platformunda ise sadece yeni satır koduyla sonlanır. Macintosh ortamında ise sadece satır başı kodu satırı sonlandırır.
C# konsol programlamada, sadece yeni satır kodu bir sonraki satırın başına geçmek için yeterlidir.
Aşağıdaki ifadelerden her ikisi de aynı işi yapar.
Console.Write(“\n”);
Console.WriteLine();
C# kaçış karakteri olarak ters bölü kullnmaya bir alternatif sunar. Eğer bir string literalin önüne @ işareti koyarsak kaçış karakteri kullanmaya gerek kalmaz.
string Dizin = @”C:\Makaleler\\String Makalesi\Metin.doc”;
Buna verbatim string (harfi harfine – aynısı) de denir. Ters bölü işareti de normal diğer karakterlerden biri olarak algılanır.
Tabi bu durumda çift tırnak için iki tane çift tırnak kullanmak gerekiyor.
string Yazi = @”Atalarımız boşuna söylelemiş “”sakla samanı, gelir zamanı”" diye”;
Daha önce artı işaretinin string ifadeleri birleştirmek için kullanıldığını göstermiştik. Artı işaretini string ifadeleri sayılarla birlikte yazmak için de kullanabiliriz.
int toplamTutar = 100;
Console.WriteLine(“Toplam tutar :” + toplamTutar + ” YTL dir.”);
Burada kural oldukça basittir. Eğer artı operandının bir tarafındaki ifade string ise diğer tarafındaki ifade de string ifadeye dönüştürülür ve daha sonra da string birleştirme işlemi gerçekleşir.
Aşağıdaki ilginç durumu inceleyelim.
int A = 12;
int B = 20;
Console.WriteLine(A + B + ” toplamlarıdır.”);
Console.WriteLine(“Toplamları ” + A + B);
Yukarıdaki program kodunun çıktısı aşağıdaki gibi olacaktır.
Peki neden ikisi farklı çıktı. Operatör önceliği kavramından tamsayılar yazısında bahsetmiştik. Operatör önceliği kurallarına göre toplama işlemlerinde öncelik soldan sağa doğrudur. İlk ifadede soldan itibaren başlandığından önce A + B işlemi yapıldı daha sonra da string ifadeye dönüştürülerek sonraki string ifade ile birleştirildi. İkinci WriteLine çağrısında ise “Toplamları” string ifadesi 12 ile birleştirildi. Daha sonra “Toplamları 12” string literali 20 ile birleştirildi. “Toplamları 1220” ifadesi oluştu.
Bu problemi çözmek için aşağıdaki gibi bir çözüm bulabiliriz.
int A = 12;
int B = 20;
Console.WriteLine(A + B + ” toplamlarıdır.”);
Console.WriteLine(“Toplamları ” + (A + B));
Parantezlerin toplama işlemine göre önceliği olduğundan ilk önce parantez içindeki işlem gerçekleşir ve sonuç aşağıdaki gibi olur.
Tamsayılar yazısında da ifade edildiği gibi bütün tamsayı türler .net Framework içerisindeki yapılardan türetilir. string veri tipi ise System.String sınıfından türetilir.
Sınıflar ve yapılar birbirlerine benzerler. Ama çok temel bir farklılıkları var, yapılar değer tiptirler, sınıflar referans tip. Daha fazla bilgiyi Değer Tip & Referans Tip adlı yazımızdan öğrenebilirsiniz.
Alıntı: http://www.csharpturk.net/Rehber.aspx?Makale=11
Her dilde olduğu gibi C# dilinde de kontrol yapıları vardır. Bunlardan biri de switch case döngüsüdür… Peki nedir switch case, ne yapar?
Mantık olarak “if else” koşul yapısına benzer. Kendisine gönderilen parametreyi değerlendirir ve ona göre ayrılan kod bloğunu çalıştırır.
Şimdi bütün bunları kod bloğumuzda görelim…
switch(değişken)
{
case kosul1:
//kodlar bu panele gelecek
break;
case kosul2:
//kodlar bu panele gelecek
break;
.
.
.
case kosuln:
//kodlar bu panele gelecek
break;
default:
//eğer hiç bir koşul desteklenmiyorsa bu koşul gerçekleşecek
break;
}
Evet arkadaşlar, yapıyı gördük; şimdi bunu daha iyi anlamak için bir örnekle açalım:
Bir button ve bir textbox koyalım formumuzun üzerine ve textbox’a girdiğimiz rakamı switch case kontrol yapısı ile kontrol edelim…
int sayi = int.parse(textbox1.text);
/* burda int tipi sayi değişkenine int.parse() fonksiyonu ile textbox1'în textini sayıya çevirerek aldık... */
switch (sayi)
{
case 0:
MessageBox.Show("Girdiğiniz Sayı Sıfır'dır...","Uyarı");
break;
case 1:
MessageBox.Show("Girdiğiniz Sayı Bir'dir...","Uyarı");
break;
case 2:
MessageBox.Show("Girdiğiniz Sayı İki'dir...", "Uyarı");
break;
case 3:
MessageBox.Show("Girdiğiniz Sayı Üç'tür...", "Uyarı");
break;
case 4:
MessageBox.Show("Girdiğiniz Sayı Dört'tür...", "Uyarı");
break;
case 5:
MessageBox.Show("Girdiğiniz Sayı Beş'dir...", "Uyarı");
break;
case 6:
MessageBox.Show("Girdiğiniz Sayı Altı'dır...", "Uyarı");
break;
case 7:
MessageBox.Show("Girdiğiniz Sayı Yedi'dir...", "Uyarı");
break;
case 8:
MessageBox.Show("Girdiğiniz Sayı Sekiz'dir...", "Uyarı");
break;
case 9:
MessageBox.Show("Girdiğiniz Sayı Dokuz'dir...", "Uyarı");
break;
default:
MessageBox.Show("Girilen Değer Bir Rakam Değildir!","Uyarı");
break;
}
Örneğimizi bitirdik bu basit bir örnek
| Active Directory Windows Server 2003 ağlarındaki bir dizin hizmetidir. Dizin hizmeti, ağdaki kaynakların bilgisini tutan ve bu bilgiyi kullanıcılara ve uygulamalara sunan ağ hizmetidir. Dizin hizmeti ağ kaynaklarına ulaşmak, bu kaynakları isimlendirmek ve güvenli bir şekilde yönetmek için gereken ortamı sağlamak amacıyla oluşturulur. |
| Algoritma konusunu en iyi şifreleme teknikleri ile işleyebileceğimi düşündüm. Bu nedenle şifrelemeye kısaca göz atmak istiyorum.II. Dünya savaşında Alman denizaltı şifresi enigma’nın çözülebilmesi savaşın dengesini değiştirmişti. Bu düşünce lise yıllarında bana kendi şifreli dilimi geliştirmeye itmişti. Her harfin yerine başka harfler oluşturmuştum. Harfler tamamen kendime özel olduğu için yazdığımın çözüleceğine olanak tanımıyordum. Yıllar sonra kendi günlüğüme almış olduğum bu şifreli alfabedeki notları (alfabeyi unuttuğum için) okumakta zorlandığımda kendim çözmek için çaba sarfettiğimde çözülebileceğini keşfetmiş oldum. Klasik harf değiştirme yöntemleri ile elde edilen şifreli dillerin çözümü için. O dil’in yapısı hakkında bilgi sahibi olmanız yetiyor. (Örneğin Türkçe de en çok A, E kullanılır sesli olduğu ve seslilerin sessizlere oranla az olduğu için). Ve bu kısa bilgi sayesinde cümle içinde en çok kullanılan karakteri aratıyorsunuz. Ve bu harf’in A olduğunu varsayıp okumaya çalışıyorsunuz. Nihayetinde bir kaç denemeden sonra diğer harfler kendini ele veriyor. Yüz yıllar öncesinden beri gelen harf kaydırma teknikleri de aynı şekilde çözülür. yusuf turan fırat yerine harf kaydrıma ile (kendinden bir ya da x sonraki harfi yazma) Oysa bu gün SSL dediğimiz güvenli şifreleme sistemlerinde ise özet olarak; |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Bunun gibi 64 bit, 128 bit ya da 256 bit gibi şifreleme yöntemleri uygulanmaktadır. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Ben Algoritma’mı kendim oluşturduğum ve anahtarlarının, çözümünün daha da kolay ve anlaşılır olduğu bir yöntem kullanacağım. Ancak metin şifrelendikten sonra anahtarları ele geçirmeden şifrenin çözülmesinin mümkün olmayacağı bir yöntem olacak.
Öncelikle algoritmamı anlatayım; Yine her harf’e bir numara vererek bu işe başlayacağız. Bu işi ileride geliştirmek isteyenler, harflere 256 ascii karakterlere, karakter numarasına başvurarak çalışma yapabilir. x grubu : A=1 ‘dir Cümlemiz ALİ olsun Cümle grubu: A=1 , L=15 , İ =12 Buna göre formülümüz A+A-b = 1+1-2=0 ALİ = 1,15,12 olarak tanımlıyken şimdi şifreli olarak 0,14,11 oldu Sonucu elde edilir. Bunun için anahtar’ın dişlilerini artırmamız gerekecek. Diyelimki x grubu anahtarımız FIRAT y grubu anahtarımız ise İSTANBUL olsun. Buna göre şifreleme yapacak olursak
Burada dikkat edilmesi gereken noktalar, 1. sıradaki K harfinin karşılığı Ğ çıktığı gibi 5. sıradaki A harfinin karşılığı’da Ğ harfi çıkmıştır. 2. dikkat edilmesi gereken nokta ise -4, -17 gibi çıkan negatif değerlerdir. - (negatif) çıkan değerlerin’de çözülebilir bir değer olabilmesi için Mod alma yönetmini uygulayacağız. (Bu tür yöntemleri işi daha da karıştırmak, zorlaştırmak için uyguladım) Örneğin -4 değerini aldığımız I+I-U : 11+11-26 = -4 değerini aldığımız formül üzerinden gidelim. Bunun için önce mod alacağımız bir sayı bulmamız gerek. Ben bu örnekte mod alınacak sayı olarak 32 sayısını buldum. a-z’ye kadar 29 , 0=’boşluk’, 30=’:’ 31=’ ” ‘ 32=’.’ Mod 32 kabul ederek işlemimize devam edelim. DECRYPTION YÖNTEMİ Bu formülü daha da zorlaştırmanın bir yolu’da şudur. FIRAT ve İSTANBUL gibi kullanılan anahtarların yanına rakamlar koymaktır. Örneğin FIRAT4578 gibi. Bu da şu anlama getirilerek kullanılmalıdır. Şifreleme ve çözme konusunu ileride daha derinlemesine belkide örnekleriyle ele alabilirim. Şimdilik bu kadar yeter. [Not: Bu metin tamamen Yusuf FIRAT tarafından oluşturulmuştur. İzinsiz alınması, kullanılması yasaktır. Yusuf FIRAT] |
—————————————–
İşte gelişimini anlatmış olduğum yukarıdaki yöntemin üzerine şöyle bir yöntem düşün ki, 128 bitlik ya da 256 bitlik şifrelemeler nasıl olduğu hakkında yorumlarınız daha net oluşsun.
Örneğin : Kimsenin bilmesini duymasını istemediğimiz ve sadece parolayı bilecek kişinin bilmesini istediğimiz gizli kelime : “aba baba” olsun. Ve bu şifrenin çözülmesi için gerekli parola ise, Adivar Super Gazi olsun.
Şifreleme yukarıdaki algoritmaya göre şöyle yapıldığını düşünün.
1. Parola’yı mod alma sayısı olarak kullanacağız. Örn: Adivar = A+D+İ+V+A+R = 1+5 + 9 + 27+ 1+20 = 63 = 6+3 = 9 yani mod 9 üzerinden işlem yapacağız.
2. Parola olan Süper ve 3. parola olan Gazi kelimelerinin ilk harflerine göre mod 9 cinsinden gizlenmesi gereken cümleyi analiz edelim.
Önce aba ‘yı analiz edelim.
a = 1 (aba’nın 1. harfi olan a ‘nın alfabedeki sırası)
S= 21 (Mod 9′a göre 3)
G= 9 (mod 9′a göre 9)
a+S+G= 1+3+9 = 13
şimdi ekranda 13 yazınca biz onun a olduğunu anlayacağız.
Ancak aba kelimesinin 3. harfi olan a için tekrar aynı motoru çalıştırdığımızda ise sonuç farklı çıkacak.
Hemen analizi başlatalım
a = 1 (Aba’nın 3. harfi olan a ‘nın alfabedeki sırası)
P= 19 (Mod 9′a göre 1) (Süper in 3. harfi P)
Z= 29 (mod 9′a göre 9) (Gazi’nin 3. harfi Z)
a+p+z = 1+ 1 + 9 = 11
Görebileceğiniz gibi, yukarıdaki örnekte a = 13 idi şimdi ise a = 11 işte aynı harfin bile başka başka sonuçlarla yazıldığı bu algoritmaların çözülme olasılığı bu nedenle çok çok daha düşmektedir.
(Not: Bu makale yusuffirat.com için Yusuf FIRAT tarafından yazılmıştır. Link (Bağlantı) verilmeksizin alınması ve kullanılması yasaktır.)
BuyCOMM (Online Ticaret Paketi) http://www.buycomm.com.tr / http://www.onlineticaret.net
BuyCOMM İsmi, yazılış stili, ticari uygulama yöntemleri, programlanması, tasarımı, işleyiş mantığı gibi tüm aşamaları. Proje sahibi firma : markum.net
Projenin İçinde bulunduğum süreç boyunca katılımcı düzeyinde.

Felibase (Tekstil İşleyiş Programı)
Tekstil firmasının 4 ayrı şubesinde farklı yazılım şirketleri tarafından yazılmış programlardan ortak veri alarak
şirket yönetimine bilgi sunmak. Grafik / sms mesaj vs.. Proje sahibi firma: felicita.com.tr
Projenin başından sonuna kadar tüm aşamalarında tek başına.
Feliçita Web Sitesi (Tekstil sektöründen bir firmaya yapılan web sitesi) http://www.felicita.com.tr
Proje sahibi firma: felicita.com.tr
Projenin başından sonuna kadar tüm aşamalarında tek başına. (Yetkililerden iş bilgileri almak kaydıyla)
Terrabase (Paperless firma içi işleyiş takip programı)
Fazla departman’a sahip olan firmalarda departmanlar arası diyaloğu kurmak, şirket yöneticilerinin departman
işleyişlerini takip edebilmesi, departman yöneticilerinin kendi departmanlarına tam hakimiyetinin sağlanması, şirket çalışanlarının günlük, haftalık ve aylık iş süreçlerini daha iyi programlayabilmesi. Proje sahibi firma terrailac.com.tr
Projenin başından sonuna kadar tüm aşamalarında tek başına. (Yetkililerden iş bilgileri almak kaydıyla)
Terra İlaç Web Sitesi (İlaç sektöründen bir firmaya yapılan web sitesi) http://www.terrailac.com.tr
İlaç firması web sitesi, online sipariş, online T.U.S. sınavı. Proje sahibi firma: terrailac.com.tr
Projenin başından sonuna kadar tüm aşamalarında tek başına. (Yetkililerden iş bilgileri almak kaydıyla)

Doğan Haber Ajansı (DHA) Haber Yönetim Sistemi. (Uluslar arası haber ajans’ı haber portali) http://www.dha.com.tr
Türkiyenin en büyük haber ajanslarından biri olan D.H.A. web sitesi. Muhabirlerin web üzerinden Doğan Grubu Haber merkezi ile iletişim kurarak, haber, video, resimlerin merkeze gönderilmesi, editörlerin onayladığı haberlerin yayınlanabilir havuza alınması, üst düzey yöneticilerin’de buradaki haberler’den onayladıklarının yayına verilmesi.
Projenin başından sonuna kadar tüm aşamalarında yazılım yöneticisi olarak. (Yetkililerden iş bilgileri almak kaydıyla)
FARMAVISION Lojistik, stok takip ve etiket programı.
Lojistik merkezinde uluslar arası lojistik program’ına yardımcı olarak yazılmış olan, promosyon takip ve etiket(barkod) baskı programı.
Projenin başından sonuna kadar tüm aşamalarında.

MDB Dosyasına Kayıt Yapma
Bir adet Windows Form oluşturalım,
Formun code bölümüne geçip code bölümünün en üst kısmına
Imports System.Data.OleDb
yazalım,
Daha sonra tekrar formumuzun desing moduna geçerek üç adet Toolbox tan TextBox ekleyelim TextBox’ ların Properties sekmesinden Name’lerini adi, soyadi ve telefon yapalım.
Daha sonra formumuza bir adet buton ekleyelim ve butonun Click eventine aşağıda yazanı ekleyelim. Ancak dikkat edilmesi gereken database yolunun doğru olması dır. Ayrıca aşağıdaki örnekte daha önceden Access te oluşturduğum vbdeneme.mdb veritabanı içine kayıt isminde bir tablo yarattım. Tablonun Fields leride id, adi, soyadi ve telefon dur.
Dim oTbl As New DataTable
Dim Baglantim As New OleDbConnection
Baglantim = New OleDbConnection( “PROVIDER= Microsoft.Jet.OLEDB.4.0;Data Source=D:\db\vbdeneme.mdb;”)
Baglantim.Open()
Dim YeniNesne As OleDbDataAdapter = New OleDbDataAdapter
Dim Kayit As String = “Select * From kayit”
YeniNesne.SelectCommand = New OleDbCommand(Kayit, Baglantim)
YeniNesne.Fill(oTbl)
Dim oRow As DataRow
oRow = oTbl.NewRow()
oRow.Item( “adi”) = adi
oRow.Item( “soyadi”) = soyadi
oRow.Item( “telefon”) = telefon
oTbl.Rows.Add(oRow)
Dim oCb As New OleDbCommandBuilder
oCb.DataAdapter = YeniNesne
YeniNesne.Update(oTbl)
Evet bir mdb dosyasına formdan gelen bir veriyi kaydettik.