Ana Menü

  • Ana sayfa
  • Teknoloji Haberleri
  • Haberler
  • Makaleler
  • Download
  • Forum Knite Online Koxp
  • İletişim


  • Donanım
  • Mühendislik
  • Network
  • Oyunlar
  • Programlama
  • Tasarım
  • Yazılım
  •  
    Haberler

  • ASUS, A6000N serisi yeni diz üstü bilgisayarlarını duyurdu
  • Türk Telekom'dan öğrencilere ADSL kampanyası
  • ASUS WL-HDD 2.5: Kablosuz Ağlar İçin Disk Paylaştırıcı
  • Virüs En İyi 10: Sober'in Hoş Olmayan Geri Dönüşü
  • Microsoft WINS Yamasını Hazırlıyor
  • Devlet Yazışmaları İnternete Taşınıyor
  • ISS'ler de ADSL Hizmeti Vermeye Başlıyor
  • Taşınabilir Video oynatıcılarda devrim DivX-POD 7010
  • Kablo Internet'te indirim oldu mu, olmadı mı ?
  • Mobil kablosuz foto yazıcısı: HP Photosmart 375
  • En küçük Pocket Pc Phone Qtek s100
  • Google, interneti yeniden tanımlıyor
  • Kitap yorumu: Dijital Kale
  • Fedora Core 3
  • Zarif ve işlevsel
  • RoboDemo 5
  • Ateşli internet tilkisi
  • Türkçe GPL Wiki Yazılımı : Wiksis
  • VII. Bilisim Haftasi Etkinlikleri
  • Teknohaber.NET TRT INT'de
  • MyDoom: Yeni sanal kurt eskilerini temizliyor
  • Google artık 1/3 daha fazla web sayfası arıyor
  • MSN Messenger’da virüs!
  • 2003’ün ‘most wanted’ sitesi; Kazaa
  • Mars Express, gezegene yaklaşıyor
  •  
    Linkler

  • Bilgisayar
  • Diğer
  • Geyik
  • Internet
  • Üniversiteler
  •  
    WinBaglama Özel
  • Hakkında
  • Nota Dosyaları
  • Download
  •  
    Teknohaber.Net

    Site hakkında
    Editörler

     
    Arama

     
    Sponsor
     
     
    İstatistik
    eXTReMe Tracker
     

    Visual Studio.NET ile Smartphone Sözlük Uygulaması

    Tarih: 07.02.2005 > Kaç kez okundu? 14404

    Ömer Çolakoğlu tarafından kaleme alınan bu makalede, Visual Studio.NET 2005'in getirdiği yenilikler, smartphone cep telefonu uygulamaları ve örnek ingilizce-türkçe sözlük uygulaması konuları hakkında bilgi sahibi olabileceksiniz...





    Merhaba,

    .Net ile 2001 yılında tanıştım ve o günden bugüne beni en çok etkileyen iki temel özellik ASP.Net ve özellikle mobil uygulamalar oldu. Bir kaç yıl öncesine kadar bir çoğumuza hayal gibi gelirdi bir cep bilgisayarı ya da cep telefonu üzerinde uygulama geliştirmek. Çünkü bunları yapabilmek için Java ya da C++ ı iyi şekilde bilmek gerekirdi ve bir çok üniversitede de malesef hakkıyla verilmiyor bu diller. Ta ki Microsoft .Net i çıkarana dek. Önce pocket pc 2002 işletim sistemi ile tanıştık. .Net ile compact framework exe leri üretebilir ve bu exe leri pocket pc üzerinde çalıştırabilir olduk. Pocket pc üzerinde database tutabilir hatta xml web servisleri ile çok rahat ve hızlı bir şekilde database server ile haberleştirebilir olduk. Hatta şu an çalıştığım firmada 30 dan fazla pocket pc xml web servisleri ve .Net Compact Framework tabanlı olarak sahada kullanılmakta. Daha sonra Microsoft Smartphone işletim sistemi ile cep telefonu sektörüne de girmiş oldu. İlk olarak Smartphone 2002 işletim sistemi ile tanıştı cep telefonları. Bu işletim sistemi default olarak .Net Compact Framework içermiyordu ve üzerinde C++ ile uygulama geliştirme imkanı sağlıyordu. Dolayısıyla çok yaygınlaşamadı. Ancak Microsoft’un önce üzerinde compact framework default olarak bulunan Windows Mobile 2003 işletim sistemini çıkarması ile sonra da Visual Studio.Net 2005 ile birlikte Vb.Net kullanarak bile doğrudan kolayca smartphone programlayabilir olduk.

    Aslında .Net te smartphone da çalışacak uygulama yazmak için ille VS.Net 2005 gerekmiyor. Nitekim ben burda anlatacağım uygulamayı VS.Net 2003 te smart device application olarak yazdım. Bu konuda dikkat edilmesi gereken en önemli nokta smartphone uygulaması yazarken smartphone un desteklediği kontroller kullanmak. Bu konuda bir sıkıntı olmadığı müddetçe benim denemelerim neticesinde bütün pocket pc uygulamaları smartphone 2003 üzerinde direkt olarak çalışıyor. Örnek olarak smartphone da buton kontrolü yok. Çünkü zaten ekranda tıklanacak bir yer yok. Bunun yerine main menu kontrolü kullanabilrsiniz. VS.Net 2005 in en önemli artısı object browser da hangi kontrolleri kullanabileceğinizi görmeniz ve emülatör kullanabilmeniz.

    Şekil-1 Yeni Proje Oluşturma Ekranı

    Şekil-1 de görüldüğü gibi VS.Net 2005 ile yeni poje oluşturuken direkt olarak Smartphone 2003 uygulaması seçebiliyorsunuz.

    Şekil-2 Smarphone Uygulaması

    Şekil-2 de görüldüğü gibi VS.Net 2005 te oluşan kullanıcı arayüzü VS.Net 2003 teki gibi sade bir form görünümünde olmayıp doğrudan emülatörün kendisi. Bu da oluşturacağınız formun daha derlemeden (derleme işlemi gerçekten çok sıkıcı) ekran üzerinde nasıl görüneceğini bilmenize olanak sağlıyor. Bunun dışında desteklenen kontrolleri kullanarak smart device application dan farklı olarak hiç bir şey yapmanıza gerek kalmıyor. Programı derliyorsunuz ve smartphone içine kopyalıyorsunuz. Tek yapmanız gereken programı smartphone üzerinden çalıştırmak.

    Smartphone üzerinde İngilizce-Türkçe, Türkçe-İngilizce Sözlük Uygulaması

    Kendime smartphone işletim sistemli bir telefon aldığımda üzerinde bir takım uygulamalar geliştirmeye karar verdim. Aklıma gelen ilk fikir bir sözlük yazmak oldu. Sonra internetten biraz araştırdıktan sonra bir arkadaşımın da yardımıyla yaklaşık 40 bin kelimelik bir sözlük database i buldum. Bu database de bütün kelimeler bir tabloda tutuluyordu. İlk olarak bu database i xml olarak kaydedip smartphone üzerinde bir dataset oluşturup xmlread() ile okuyup sonra bir dataview oluşturup bu dataview üzerinde filter özelliğini kullanarak arama yapmak istedim. Tahmin edebileceğiniz üzere tablonun hepsini xml olarak yazmak yerine bütün harfler için bir xml dosyası olarak (a.xml,b.xml...) kaydettim ve kullanıcı hangi kelimeyi girdiyse ilk harfine bakıp ona göre xmlread(ilkharf+”.xml”) olarak dataseti doldurdum. Bu şekilde 40 bin kelimelik bir dataseti ortalama 2000 kelimeye düşürmüş oldum. Fakat buna rağmen bir xml dosyasının okunup bir combobox içine doldurulmasının bile yaklaşık 45-60 saniye zaman aldığını gördüm. Zaten daha önceki tecrübelerime dayanarak mobil uygulamlardaki yavaşlığın en büyük nedenlerinden birinin xml dosyayı parse etmek olduğunu biliyorum. Örneğin bir web servisten bir string ifade döndüğünde bu ifadenin alınması ve ekrana yazdırılması işlemi 1 saniyeden az sürerken aynı string ifade tek kolonlu ve tek satırlı bir dataset içinde döndüğünde 2 saniyeden fazla sürüyor. Kayıt sayısı fazla olduğunda bu performans çok daha düşüyor.

    Sonuç olarak xml ve dataset kullanmak yerine herhangi bir text dosya kullanmak daha mantıklı geldi. Çünkü bir sözlükte benim aradığım şey sonuçta bir kelimenin karşılığı yani maximum 255 karakter uzunlukta bir string. Bunun bir dataset üzerinde aramaya çalıştığımda “dataset.tables(0).rows(0).items(0).tostring” nesnesini oluşturuyorum. Bu kadar kalabalığa gerek varmı? Sonuçta aradığım alt tarafı bir string. Buradan yola çıkarak bütün harfler için bir text dosya oluşturdum ve girilen kelimenin ilk karakterine göre ilgili dosyayı okutup bir stringe atadım ve bu string üzerinde sıralı arama yaptırdım. Gerçekten çok performanslı çalışıyor. Dosya okuma yaklaşık 1 sn aranılan kelime ile başlayan kelimeleri bulma 1 sn den daha az sürüyor.

    Dosya üzerinde arama yapabilmek için çok basit bir yol izledim. Database den SQL ile kelimeye göre sıralı bir sorgu çektim ve satır satır text dosyaya yazdırdım. Yeni bir satırın başlangıcı olarak “{“, bitişi olarak “}” işaretini kullandım. Türkçe kelimenin karşılığı olarak ingilizce kelimenin başlangıç noktasına “#” karakterini kullandım.

    ...

    {abartili#exaggerated.}

    {abartilmak#to be exaggerated.}

    {abartma#exaggeration, overstatement.}

    {abartmaci#1. habitually exaggerating. 2. exaggerator.}

    {abartmacilik#the habit of exaggerating.}

    {abartmak#/i/ to exaggerate.}

    {abartmali#exaggerated.}

    .....

    Bu kadar girişten sonra artık programı yazma zamanıdır herhalde.

    Bunun için eğer VS.Net 2005 kullanıyorsanız yeni bir smartphone application oluşturun. Eğer VS.Net 2003 kullanıyorsanız yeni bir smartdevice application oluşturun. Formunuzun üzerine bir text box onun altına bir treeview, onun da altına bir label kontrolü yerleştirin. Eğer formunuzda otomatik olarak menuitem kontrolü oluşmamışsa bir menuitem kontrolü ekleyin ve aşağıdaki gibi menüleri oluşturun. Burada treeview kullanmamızdaki amaç, örneğin elma yazdığınızda elma ile başlayan tüm kelimelerin bir listbox üzerinde göstermek istiyorum fakat smartphone listbox ı desteklemiyor. Ona en yakın kontrol ben treview i seçtim ama siz combobox da kullanabilirsiniz.

     

    Şekil-3 VS.Net 2005 Smartphone Application     Şekil-4 VS.Net 2003 SmartDevice Application

    Tasarımı bu şekilde gerçekleştirdikten sonra sıra şimdi kod yazmakta.

    Namespace ler

    Imports System.Drawing

    Imports System.IO

    Imports System

    Programda kullanılacak global değişkenler

        Dim ilkHarf As String = "a" 'okunacak dosya adı için kelimenin ilk harfi

        Dim str As String = "" 'Okunan dosyanın içeriğinin atandığı string değişken

        Dim words(2000) As String 'Treeview e doldurulacak kelime ‘karşılıklarının tutulduğu dizi 2000 değeri rastgele verilmiştir. Dinamik ‘olarak da uzunluğu değişen dizi tanımlanabilirdi.

        Dim dil As String = "TR-EN" 'Hangi dilde çeviri yapılacağını belirleyen değişken

        Dim klasor As String = "\mounted volume" 'sozluk dosyalarının bulunduğu klasor

    Menüler>Başka Kelime

     Private Sub MenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem1.Click

            TextBox1.Text = ""

            TextBox1.Focus()

            TreeView1.Visible = False

            Label1.Visible = False

            Update()

        End Sub

    Menüler>Çıkış

      Private Sub MenuItem4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

            Close()

        End Sub

    Menüler>Dil Değiştir

    Private Sub MenuItem5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem5.Click

            If dil = "EN-TR" Then

                dil = "TR-EN"

                Text = "TR-İNG SÖZLÜK"

            Else

                dil = "EN-TR"

                Text = "ENG-TR GLOSSARY"

            End If

            TreeView1.Visible = False

            Label1.Visible = False

            TextBox1.Text = ""

            TextBox1.Focus()

            Update()

        End Sub

    Kelimenin aranması (Textbox1 e aranılacak kelimenin yazılması ve enter tuşuna basılması olayı. Smartphone larda enter tuşu joistick in ortsındaki mavi tuş.)

    Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown

            If e.KeyCode = Keys.Enter Then

                bul()

            End If

            If e.KeyCode = Keys.Down Then

                TreeView1.Focus()

            End If

        End Sub

    Kelimeyi bulma ve treeview’a doldurma işlemi

    Sub bul()

            Dim len As Integer

            Dim i As Integer

            Dim lindex As Integer = 0 'Last index aranılan kelimenin str içindeki son bulunan pozisyon değeri

            Dim findex As Integer = 0 'First index aranılan kelimenin str içindeki ilk bulunan pozisyon değeri

            Dim findexNew As Integer = 0

            Dim aranan As String = TextBox1.Text

            Dim kayit As String = "" 'bulunan kayıt     

            Dim strtmp As String = str 'aradığımız kelime ile başlayan kelimelerin bulunduğu bölüm dosya içeriğinin filtrelenmiş hali.

            Dim tr As String

            Dim en As String

            Dim diyez As Integer '# karakterinin index numarası

            'Her seferinde dosya okumamak için eğer bir sonraki girilen kelimenin ilk harfi bir önceki girilen kelimeninilk harfi ile aynı ise dosya okumuyor yoksa dosya okuyor. Dosya okuma işleminde dosyanın içeriği global değişken olan str’ye atanıyor.

            If TextBox1.Text.Substring(0, 1) <> ilkHarf Then

                ilkHarf = TextBox1.Text.Substring(0, 1)

                dosyaOku(ilkHarf)

            End If

            'Treeview in içeriği ve aranılan kelimelerin karşılıklarının tutulduğu words dizisi temizleniyor.

            TreeView1.Nodes.Clear()

            For i = 0 To words.Length - 1

                words(i) = ""

            Next

            TreeView1.Visible = True

            TreeView1.Focus()

            Update()

            strtmp = str

            lindex = 0

            findex = -2

            TreeView1.Nodes.Clear()

            While findex <> -1 'aranılan kelime bulunamamıssa -1 değeri dönüyor.

                findex = strtmp.IndexOf("{" + aranan)

                len = strtmp.Length

                If findex = -1 Then

                    Return

                End If

                'Aranılan karakter il kez bulunduktan sonra strTmp’ye str nin bu index noktasından sonuna kadar olan kısım olmak üzere değer atanıyor ve bundan sonraki arama işlemi strTmp üzerinde yapılıyor.

                strtmp = strtmp.Substring(findex, strtmp.Length - findex - 1)

                findex = strtmp.IndexOf("{" + aranan)

                If findex = -1 Then

                    Return

                End If

                len = strtmp.Length

                'Satırın sonu bulunuyor.

                lindex = strtmp.IndexOf("}")

                If lindex <> -1 And findex <> -1 Then

                    'Türkçe kelime ve ingilizce karşılığının olduğu bölüm bulunuyor ve kayit değişkenine atanıyor.

                    kayit = strtmp.Substring(findex, lindex)

                    'Türkçe ve ingilizce kelimeyi ayıran # karakterinin yeri bulunuyor ve buna göre Türkçe ve İngilizce kelime birbirinden ayrılıyor.

                    diyez = strtmp.IndexOf("#")

                    If diyez <> -1 Then

                        'Eğer # işareti bulunmuşsa Türkçe değişken tr ye ingilizce değişken en ye atanıyor.

                        words(TreeView1.Nodes.Count) = ""

                        tr = kayit.Substring(1, diyez - 1)

                        en = kayit.Substring(diyez, lindex - diyez)

                        words(TreeView1.Nodes.Count) = Replace(en, "#", "")

                    End If

                    TreeView1.Nodes.Add(tr)

                    'Türkçe kelimeler treeview a ekleniyor. İngilizce karşılıkları da words dizisine atanıyor. Böylece treeview üzerinde yukarı aşağı dolaşırken bu dizinin index numarasına göre karşılığı label üzerinde yazdırabileceğiz.

                    strtmp = strtmp.Substring(lindex, strtmp.Length - lindex -

                End If

            End While

        End Sub

    Dosya Okuma İşlemi

    Dosya okurken aslında dosyamızda kelimeler satır satır tutulduğu için readline ile okuyup Türkçe kelimeleri ve ingilizce karşılıklarını birer dizide tutayım rahat rahat çalışayım diye düşünmüştüm ama burada iki sorun çıktı karşıma birincisi readline() çok yavaş ikincisi diziler üzerinde for döngüleri çok yavaş. Dolasyısıyla text dosyalarımız satır satır tutuyor bilgiyi ama bunun bize sağladığı bir avantaj yok şu anda.

    Sub dosyaOku(ByVal ilkharf As String)

            Dim dosya As String

            Text = "yukleniyor...."

            Dim i As Integer = 0

            If dil = "EN-TR" Then

                dosya = klasor + "\sozluk\en2tr\" + ilkharf + ".txt"

                Text = "ENG-TR GLOSSARY"

            End If

            If dil = "TR-EN" Then

                dosya = klasor + "\sozluk\tr2en\" + ilkharf + ".txt"

                Text = "TR-İNG SÖZLÜK"

            End If

            Dim sr As StreamReader = New StreamReader(dosya)

            str = sr.ReadToEnd

            TextBox1.Focus()

        End Sub

    TreeView ın After Select Olayı

    TreeView üzerinde oklarla dolaşırken focuslandığımız kelimenin karşılığını label’a yazdırıyoruz.

    Private Sub TreeView1_AfterSelect(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect

            Label1.Visible = TreeView1.Visible()

            If TreeView1.Visible = True Then

                Label1.Text = words(TreeView1.Nodes(e.Node.Index).Index)

                Update()

                Dim kelime As String

                Try

                    kelime = TreeView1.SelectedNode.Text

                Catch ex As Exception

                    MessageBox.Show(ex.Message)

                End Try

            End If

        End Sub

    Ve son olarak sıra programımızı smartphone üzerine deploy etmeye geldi. Ben bütün datalar ve program dosyaları için telefonuma takılı olan sd kartımı kullandım Çünkü yaklaşık 10 mb alana ihtiyacınız var. Bunun için programda sabit olarak tanımladığım klasör değişkenine “\mounted volume\” değişkenini atadım. Böylece ekteki sözlük klasörünü olduğu gibi sd karta kopyalamak ve programın exesini de telefonun herhangi bir yerine kopyalamak yeterli. Sonuçlar aşağıda.

    Sağlıcakla…

    Ömer Faruk ÇOLAKOĞLU

    ocolakoglu{at}istikbal . com . tr






    Yorumlar

    Gönderen: Erhan Atay Tarih: 11:48 08.02.2005
    Ömercim gerçekten güzel bir uygulama yapmıssın. Ellerine saglık.

    Gönderen: Faruk Özdemir Tarih: 07:56 13.02.2005
    Ömercim Yazını okudum Çok güzel Olmuş Çalışmalarında sana başarılar diloyorum...

    Gönderen: Alper Baştürk Tarih: 02:57 17.02.2005
    Herşey mükemmel. Ellerine sağlık Ömer. Başarılarının devam etmesini ve çalışmalarında kolaylıklar dilerim.

    Gönderen: İsmail Cagatay Bilgin Tarih: 12:45 26.02.2005
    Ortak! ellerine sağlık.Cok yararlı ve basarılı bir yazı olmus,kutlarım.Iyi calismalar...

    Gönderen: kadir Tarih: 07:07 07.03.2005
    bu programı hangi telefonlar kapsıyor nokia dahilmi buna

    Gönderen: Ömer Tarih: 01:29 09.03.2005
    Nokia nın bildiğim kadarıyla smartphone işletim sistemli telefonu yok bu da nokia nın çalıştırmayacağı anlamına geliyor. Ama .Net kodunu symbian icin derleyen bi program gordum gecen internette onunla kullanılabilir sanırım.

    Gönderen: Ahmet Emre ŞAHİN Tarih: 11:37 10.03.2005
    Ömer Bey'e çok teşekkür ediyorum. Paylaşımcılık ruhuna uygun bir davranışla www.mpx.gen.tr/forum 'a hiçbir ücret karşılığı beklemeden bu programı kazandırdı. Çok yararlı ve başarılı bir program. Smartphone'ları çekici hale getiren başarılı bir uygulama. TEBRİKLER!

    Gönderen: Erkan Ünlü Tarih: 12:52 15.04.2005
    bende uğur ile aynı kulvardayım. Bu iş VC++ 4.0 dada yapılabiliyormuş. Ama ben beceremedim. Bunda beceren var mı? erkan_unlu@hotmail.com

    Gönderen: zapatistan Tarih: 07:04 25.03.2005
    mpx kullanıcısıyım MÜKEMMEL bir yaklaşım

    Gönderen: ismail ucan Tarih: 08:41 05.04.2005
    kardeş hoş guzelde bu smartdevice yada benzer bir program varmı delphi için ismailucan15@yahoo.com

    Gönderen: Ömer ÇOLAKOĞLU Tarih: 03:40 13.04.2005
    Delphi 8 .net derleyince dotnet kodu uretiyor ben denemedim ama destekliyor olabilir smartphone u

    Gönderen: Uğur Sayal Tarih: 03:33 15.04.2005
    çok acemiyim bu konuya, bağışlayın, ama nasıl yükleyebiliriz bunu? ugursayal@hotmail.com

    Gönderen: zafer kara Tarih: 04:13 27.04.2005
    hocam gercekten güzel çalışma.ellerinize sağlık yalnız ben VS.Net 2003 de mainmenu kontrolünü oturttugumda hata alıyorum yardımcı olursanız sevinirim.

    Gönderen: Ömer Çolakoğlu Tarih: 09:06 30.04.2005
    Mail adresinizi bırakırsanız örnek kod gönderebilirim.

    Gönderen: Zafer kara Tarih: 05:34 10.05.2005
    hocam ilginiz için tşk. dört gözle bekliyoyurm zafer.kara@isnet.net.tr

    Gönderen: bsam Tarih: 04:07 13.05.2005
    mpx.gen.tr den çoook teşekkürler. Ellerinize emeğinize sağlık

    Gönderen: alper torun Tarih: 07:02 15.06.2005
    Zafer beye gönderdiğiniz örnek kodun bir kopyasını banada gönderebilirmisiniz? alpertorun@gmail.com

    Gönderen: Ali Çetiner Tarih: 08:03 16.06.2005
    Ömer bey güzel bir uygulama olmuş tebrikler.Ben size bişey sormak istiyorum.Cep telefonun bluetooth unu kullanabilirmiyiz cep telefonu için yazılan proğramlarda.Mesela bluetooth ile oyuncak bi arabayı kontrol etmek istesek nasıl sinya lgönderebiliriz.Böyle bir proğram yazılabilirmi.Kısacası bluetooth kulanarak veri gönderecek bi proğrama ihtiyacım var.Bu konuda yardımcı olursanız çok sevinirim.

    Gönderen: sait çelik Tarih: 05:33 18.06.2005
    harikasınız.. lakin sormadan geçemeyeceğim bu işletim sisteminin türkçe olma olasılığı ne kadarlık bir zaman alır açıkçası merak ediyorum. Bir bilginiz varmı. sedcos@hotmail.com

    Gönderen: Ömer Çolakoğlu Tarih: 08:04 04.05.2005
    Re:zafer kara mailinizi yazarsanız örnek kod gönderebilirim.

    Gönderen: Hasan USLU Tarih: 01:53 22.06.2005
    Burda bul alt rutininin bir miktar düzenlediğim bir sürümü var Ayrıca düşüncem şu Words değişkeni yerine bir adet SortedList veya benzer bir dizi tanımalanıp dosyaOku rutini içerisinde tüm dosya taranarak kayıtlar bu dizeye key=value bileşimleri şeklinde doldurulabilir ve bu dizenin index of metodu sayesinde belkide daha hızlı bir arama yapılabilir :) Sub bul() Dim i As Integer Dim lindex As Integer = 0 'Last index aranılan kelimenin str içindeki son bulunan pozisyon değeri Dim findex As Integer = 0 'First index aranılan kelimenin str içindeki ilk bulunan pozisyon değeri Dim findexNew As Integer = 0 Dim aranan As String = TextBox1.Text Dim kayit As String = "" 'bulunan kayıt Dim strtmp As String = str 'aradığımız kelime ile başlayan kelimelerin bulunduğu bölüm dosya içeriğinin filtrelenmiş hali. Dim tr As String Dim en As String Dim diyez As Integer '# karakterinin index numarası 'Her seferinde dosya okumamak için eğer bir sonraki girilen kelimenin ilk harfi bir önceki girilen kelimeninilk harfi ile aynı ise dosya okumuyor yoksa dosya okuyor. Dosya okuma işleminde dosyanın içeriği global değişken olan str’ye atanıyor. If TextBox1.Text.Substring(0, 1) <> ilkHarf Then ilkHarf = TextBox1.Text.Substring(0, 1) dosyaOku(ilkHarf) End If 'Treeview in içeriği ve aranılan kelimelerin karşılıklarının tutulduğu words dizisi temizleniyor. TreeView1.Nodes.Clear() For i = 0 To words.Length - 1 words(i) = "" Next TreeView1.Visible = True TreeView1.Focus() Update() strtmp = str lindex = 0 findex = -2 TreeView1.Nodes.Clear() While findex <> -1 'aranılan kelime bulunamamıssa -1 değeri dönüyor. findex = strtmp.IndexOf("{" + aranan) If findex = -1 Then Return 'Satırın sonu bulunuyor. lindex = strtmp.IndexOf("}") if lindex < findex + 1 or findex = -1 then Return 'Türkçe kelime ve ingilizce karşılığının olduğu bölüm bulunuyor ve kayit değişkenine atanıyor. kayit = strtmp.Substring(findex, lindex) 'Aranılan karakter il kez bulunduktan sonra strTmp’ye str nin bu index noktasından sonuna kadar olan kısım olmak üzere değer atanıyor ve bundan sonraki arama işlemi strTmp üzerinde yapılıyor. strtmp = strtmp.Substring(kayit.Length+1, strtmp.Length - kayit.Length) ' Alınan kayıt parantezlerden arındırılıyor kayit = kayit.Substring(1, kayit.Length-2) 'Türkçe ve ingilizce kelimeyi ayıran # karakterinin yeri bulunuyor ve buna göre Türkçe ve İngilizce kelime birbirinden ayrılıyor. diyez = kayit.IndexOf("#") 'Türkçe kelimeler treeview a ekleniyor. İngilizce karşılıkları da words dizisine atanıyor. Böylece treeview üzerinde yukarı aşağı dolaşırken bu dizinin index numarasına göre karşılığı label üzerinde yazdırabileceğiz. If diyez <> -1 Then 'Eğer # işareti bulunmuşsa Türkçe değişken tr ye ingilizce değişken en ye atanıyor. words(TreeView1.Nodes.Count) = "" tr = kayit.Substring(0, diyez) en = kayit.Substring(diyez, kayit.Length - diyez + 1) End If TreeView1.Nodes.Add(tr) End While End Sub

    Gönderen: Teoman Karakaya Tarih: 02:30 27.06.2005
    Ömer bey şu örnek kodunuzu bende alabilirmiyim. teo1981@mynet.com iyi çalışmalar

    Gönderen: Ömer Çolakoğlu Tarih: 12:56 29.07.2005
    Yazı ile ilgilenen herkese teşekkür ederim burada yazılan her talebe cevap vermek isterdim. Hatta en son bu programin yeni versiyonu uzerinde calisiyordum yaklsik 10 kat daha hizli calisiyor ama agustos 1 itibariyle asker olacagim icin yetismedi. Cevap veremedigim arkadaslardan ozur diliyorum.

    Gönderen: emrullah Tarih: 05:23 17.07.2005
    faydalı bir eser... ellerinize sağlık..ben de buna benzer bir şey arıyordum ama tam olarak bu değil.sanırım bu uygulamayı bilgisayarda kullanamayız.ben bir sözlük hazırlamak istiyorum. baya uğraştıysam da bir netice alamadım. veri tabanım var lakin programcılıktan pek anlaıyorum. diyeceğim o ki elinizde böyle bir uygulama kodu -veya adı her neyse- varsa ve gönderebilirseniz çok makbule geçer.kolay gelsin. emrullahyakut@hotmail.com

    Gönderen: BİLAL BAYCAN Tarih: 06:01 07.10.2005
    VALLA ABI BU YAZLILANLARDAN HICBISEY ANLAMADIM BIRAZCIK BENIM SEVIYEMDE ANLATIRSANIZ SEVINIRIM(xromeo_61x@mynet.com)

    Gönderen: mustafa özarslan Tarih: 12:18 24.10.2005
    makale mükemmel ama ben motorola mpx 200 kullanıyorum 2003 ve türkçe sini yüklemek istiyorum bunu basit bir sekilde nasıl yaparım ve nerden bulucam bunu imail adresime gönderirsen ömer kardeş sana teşekkür ederim conocino@hotmail.com

    Gönderen: mpx'ci ahmet Tarih: 07:36 28.10.2005
    başarılarının devamını dilerim.go on ömer...

    Gönderen: F_A_F GRUBU Tarih: 04:05 21.11.2005
    BİRAZ DAHA ÇALIŞ İYİ OLACAK

    Gönderen: Salim Afşar Tarih: 05:06 09.12.2005
    Elinize sağlık... Proje kodlarını gotdotnet tarzı sitelerde yayınlayarak, geliştirmeye açık bir proje yaparsanız, geliştirebiliriz. Önemli olan burda veri tabanı, smartphone üzerinde sql ce ile geliştirme yapmadım ama txt dosyalar yerine sql ce kullanılabilir, ayrıca üstten alta geçmek mümkün değil vb... txt to speech de eklenirse süper olur. eğer askerden el atabiliyorsanız, bir proje kurarsanız gönüllü bir çok arkadaş çıkacağından eminim, 1-2 haftalık bir çalışmayla çok daha güzel yapılabilir. Sevgiler afsarsal@yahoo.com

    Gönderen: umut atalay Tarih: 07:11 17.12.2005
    her cihazda "mounted volume" klasoru bulunmayabilir veya ismi orn. "storage card" olarak gecebilir. Storage Cardlar'i (Depolama birimlerinin) "gercek" isimlerini bulmak icin ozel apilerini kullanmalisiniz. Veri okumak icin streamreader yerine filestream size compact framework ortaminda zaman kazandiracaktir. Makaleleriniz devamini dilerim.. PocketCafe Mobile Developer..

    Gönderen: MEDIHA UNAL Tarih: 08:40 06.02.2006
    BEN BILGISAYARLARDA HIC SOZLUK GORMEDIM

    Gönderen: Taner Soyugenç Tarih: 05:40 17.02.2006
    Çok güzel bir çalışma. Kutlarım.

    Gönderen: yusuf akgül Tarih: 02:50 15.11.2006
    makaleniz gerçekten çok yararlı, bende PDA üzerinde sözlük programı uygulamsı yapacam ama elimde sözlük veritabanı yok sizin burada kullandığınız 40.000 kelimelik sözlüğü kullanabilirmiyiz? gönderirseniz çok sevinirim yusuf198626@gmail.com

    Gönderen: kadir ishakoğlu Tarih: 01:48 08.11.2006
    bende motorola pebl u6 var bu telefonda bu tarz çalışmalar yapılabilirmi 10 mb hafızaya ihtiyacımız olduundan bahstmişsin u 6 da sadece 5 mb hafıza bu konuda bilgilendirirsen beni sewinirim veya bilgisi olan varsa mail atabilir kadirishak@hotmail.com

    Gönderen: adem uncu Tarih: 09:54 17.01.2007
    xml veya txt dosya yerine excell kullanılamazmıydı? arama daha rahat yapılırdı.

    buy levitra online viagra
    best price generic propecia
    generic viagra online
    buy cheap uk viagra
    buy viagra line
    order cheapest propecia online
    viagra gel
    viagra prescription
    uk propecia sales
    viagra cialis online sales
    cialis order
    cialis buy on line
    cialis 20 mg
    cialis no prescription
    discount drug propecia
    usa cialis sales
    propecia for hair loss
    cialis soft tablets
    cialis sales uk
    viagra in spain
    generic cialis sale
    order propecia
    viagra blister 4
    pfizer soft viagra
    info viagra
    viagra and cialis for sale
    cialis daily
    online prescription propecia
    real viagra online
    cialis price 100 mg
    lowest price for propecia
    cialis soft
    combine cialis and levitra
    mail order propecia
    viagra fast delivery
    generic propecia viagra
    get viagra fast
    get cialis
    cialis endurance
    viagra costs
    buy discount viagra
    canadian propecia rx
    best price for propecia online
    buy propecia online cheap pharmacy
    best price for propecia
    buy cheap online propecia
    viagra canada
    generic propecia sale
    viagra for women
    best price propecia
    how much is viagra
    levitra viagra online
    get propecia online pharmacy
    viagra label
    buy viagra cialis levitra
    professional cialis
    ordering viagra overnight delivery
    cost of cialis
    woman and cialis
    what is cialis
    viagra buy
    ordering propecia
    viagra tablet weight
    cialis usa
    canadian generic viagra online
    viagra online
    purchase cialis us
    order propecia pill
    levitra vs cialis
    viagra prescriptions
    buy online propecia
    brand name cialis overnight
    cheap viagra online
    brand viagra professional
    cialis price in canada
    viagra next day delivery
    effects of cialis
    buying cialis online
    purchase cialis
    generic cialis canadian
    canadian pharmacy viagra legal
    cialis for women
    online propecia sales
    how does viagra work
    liquid propecia
    online pharmacy propecia
    cialis express delivery
    cialis philippines
    buy cialis fedex shipping
    viagra perscription
    price check 50mg viagra
    baldness male propecia
    real viagra pharmacy prescription
    cialis canada
    canada online pharmacy propecia
    purchase propecia
    should i chew cialis
    canadian drugs propecia
    order viagra
    cialis and ketoconazole
    viagra canadian pharmacy dosage
    us cialis
    viagra dose
    usa cialis
    viagra lawyers
    lowest propecia prices
    discount propecia propecia
    cialis headaches
    buy mg propecia
    cialis arterial fibrillation
    canada viagra pharmacies scam
    china viagra
    viagra free
    buy propecia uk
    purchase cialis cheap
    viagra discount sale
    low price cialis
    low cost propecia
    cialis fast delivery
    next day viagra
    cialis no rx
    real viagra without prescription
    indian cialis
    how to get viagra
    buy cialis canada
    buy cialis us
    best price on propecia
    canada viagra generic
    cialis strenght mg
    real cialis
    viagra non prescription
    buy cialis once daily
    viagra for cheap
    cialis levitra sale viagra
    viagra in india
    cialis low price
    cialis professional no prescription
    viagra samples
    online propecia prescription
    cialis levitra
    viagra pills
    cialis 30 mg
    buy viagra
    viagra 100mg england
    mexico viagra
    viagra mexico
    cialis next day
    cialis herbal
    canada viagra
    cialis mastercard

    Teknohaber.Net sitesi üzerinde özgür bir yazılım olan tekno.Portal isimli portal yönetim sistemi çalışmaktadır. Sitede bulunan yazılar kaynak gösterilerek yayınlanabilir. Yazıların sorumlulukları yazarlarına aittir. Her hakkı saklıdır, © 2001. google articles article