Konu Araçları | Konu Seçenekleri | Gösterim Stili
Tarih
20/05/2015 13:45
Konu Sahibi
drummers
Yorumlar
7
Okunma
2903
Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
drummers

drummers

Destek
6533
Om.... Ca....
 120
 414
 11/05/2009
125
 İzmir
 
 Ofis 2003
 29/05/2019,12:04
Çözüldü 

Kod:
1
2
3
4
5
6
7
8
9
10
11
 Private Sub DRm_Button2_Click(sender As System.Object, e As System.EventArgs) Handles DRm_Button2.Click

        Dim FilesInDir As String() = Directory.GetFiles(Application.StartupPath & "\REPERTUARX\", "*.txt", SearchOption.AllDirectories)
        Dim SFile As String
        ListView1.Items.Clear()
        For Each SFile In FilesInDir
            ListView1.Items.Add(New ListViewItem(New String() {SFile.Replace(Application.StartupPath & "\REPERTUARX\", ""), CStr(FileLen(SFile))}))

        Next

    End Sub


Application.StartupPath & "\REPERTUARX\" Klasörümün içinde birçok klasör var ve yukarıdaki gibi arama yapıp sonuçları listview de gösteriyorum

Sonuç şöyle oluyoru

TÜRKÜLER\Ah Le Yar.txt
TÜRKÜLER\XXXX.txt
TÜRKÜLER\Deneme.txt
TÜRKÜLER\Yar.txt
POP\Yyyyyy.txt
DİĞER\Cccccc.txt

Ben yukardaki kodu nasıl revize etmeliyim ki

Listvievde 1 kolon klasör ismi 2. kolon şarkı ismi olsun.

Örnek

Klasör Adı    Şarkı Adı

POP             Yyyy.txt



drummers, 11-05-2009 tarihinden beri AccessTr.neT üyesidir.

alpeki99

alpeki99

Uzman
6
Ol....
 39
 162
 6.134
 29/10/2008
 Bursa
 Yazılım Geliştirici
 Ofis 2010 32 Bit
 22/06/2019,10:56
Sadece bir formdan ibaret olan örnek projeyi eklerseniz yardımcı olmak isterim.


AccessTr.Net teknik konular içeren bir sitedir. Bu tip sitelerde en iyi şekilde yardım alabilmeniz için Site Kurallarını mutlaka okumanız ve buna göre hareket etmeniz lazım.

...........
drummers

drummers

Destek
6533
Om.... Ca....
 120
 414
 11/05/2009
125
 İzmir
 
 Ofis 2003
 29/05/2019,12:04
(20/05/2015 14:48)alpeki99 Adlı Kullanıcıdan Alıntı: Sadece bir formdan ibaret olan örnek projeyi eklerseniz yardımcı olmak isterim.

Dosya eklenmiştir. İlaveten Listeleme işlemi bittikten sonra listedeki herhangi bir item tıklanırsa o itemin içeriğini richtextbox da okutmak istiyorum. Teşekkürler


drummers, 11-05-2009 tarihinden beri AccessTr.neT üyesidir.

alpeki99

alpeki99

Uzman
6
Ol....
 39
 162
 6.134
 29/10/2008
 Bursa
 Yazılım Geliştirici
 Ofis 2010 32 Bit
 22/06/2019,10:56
Normalde bir konuda birden fazla soru olduğu zaman cevap vermem ancak sizi az çok bilip suistimal etmeyeceğinizi düşünerek cevaplıyorum.

Öncelikle bir prosedür oluşturuyorum:

Visual Basic Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub KlasorleriListele()

        Dim satir As Integer
       Dim sarkiBaslangic, klasorBaslangic, sarkiAdiUzunlugu As Integer
       Dim sarkiAdi, klasorAdi As String

       Dim FilesInDir As String() = Directory.GetFiles(Application.StartupPath & "\REPERTUARX\", "*.txt", SearchOption.AllDirectories)
       Dim SFile As String
       ListView1.Items.Clear()

       For Each SFile In FilesInDir
           sarkiBaslangic = SFile.LastIndexOf("\") + 2
           sarkiAdi = Mid(SFile, sarkiBaslangic)
           sarkiAdiUzunlugu = Len(SFile) - sarkiBaslangic + 2

           klasorBaslangic = SFile.IndexOf("X\") + 3
           klasorAdi = Mid(SFile, klasorBaslangic, (Len(SFile) - sarkiAdiUzunlugu + 1) - klasorBaslangic)

           ListView1.Items.Add(klasorAdi)
           ListView1.Items(satir).SubItems.Add(sarkiAdi)
           satir += 1
       Next
   End Sub


Listview'de sağ üst köşedeki üçgen kulakçık menüsünde Edit Columns tıklayın. Add butonuna tıklayıp yeni bir sütun ekleyin. Ben genişliklerini 100 ve 200 yaptım.

Yukarıdaki KlasorleriListele prosedürü tek başına çalışamaz. Bundan dolayı Formun Load yani Yüklendiğinde olayında ve butonun tıklanma olayında bu prosedürü çalıştırıyoruz:

Visual Basic Code
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        KlasorleriListele()
   End Sub


Visual Basic Code
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

        KlasorleriListele()
    End Sub


Bu şekilde yapılacak olursa yukarıdaki kodlar ile listeleme işlemleri yapılabilir. Gelelim TXT dosyaların içeriğinin RichTextBox ta gösterilmesine.

Öncelikle yeni bir prosedür ekliyoruz:

Visual Basic Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub DosyaIceriginiOku(ByVal dosyaAdresi As String)


       Try
           Using sr As New StreamReader(dosyaAdresi, System.Text.Encoding.Default)
               Dim dosyaIcerigi As String
               dosyaIcerigi = sr.ReadToEnd()
               RichTextBox1.Text = dosyaIcerigi
           End Using
       Catch e As Exception
           MsgBox("Dosya içeriği okunamadı :" & vbCrLf & vbCrLf & e.Message)
       End Try

   End Sub


Bu prosedür öncekinden farklı olarak bir parametre alacak. Bu parametreye içeriğini görüntülemek istediğimiz TXT dosyasının adresini göndereceğiz. Ona sonra geliriz şimdi prosedürü incelemeye devam edelim.

Try-Catch kaçınılmaz olarak kullanılmalıdır yoksa programda kırılmaya sebebiyet verecek hatalar alabilirsiniz.

StreamReader da ikinci parametre olarak System.Text.Encoding.Default kullanmazsanız dosya içeriğini gösterirken Türkçe karakterler yerine garip karakterler çıkacaktır.

Gelelim bu prosedüre gönderilecek dosya adresini nasıl alacağımıza. Listview'in özelliklerinden FullRowSelect özelliğini True yapıyoruz. Listview üzerinde tıklama işleminde eğer tıklanılan satırın Index değeri değişirse tıklanan satırdaki klasör ve şarkı isimlerini kullarak Txt dosyası adresini prosedüre parametre olarak gönderiyoruz:

Visual Basic Code
Private Sub ListView1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListView1.SelectedIndexChanged

        DosyaIceriginiOku(Application.StartupPath & "\REPERTUARX\" & ListView1.Items(ListView1.FocusedItem.Index).SubItems(0).Text & "\" & ListView1.Items(ListView1.FocusedItem.Index).SubItems(1).Text)
   End Sub


[Resim: do.php?img=4869]



AccessTr.Net teknik konular içeren bir sitedir. Bu tip sitelerde en iyi şekilde yardım alabilmeniz için Site Kurallarını mutlaka okumanız ve buna göre hareket etmeniz lazım.

...........
drummers

drummers

Destek
6533
Om.... Ca....
 120
 414
 11/05/2009
125
 İzmir
 
 Ofis 2003
 29/05/2019,12:04
(21/05/2015 10:08)alpeki99 Adlı Kullanıcıdan Alıntı: StreamReader da ikinci parametre olarak System.Text.Encoding.Default kullanmazsanız dosya içeriğini gösterirken Türkçe karakterler yerine garip karakterler çıkacaktır.

Öncelikle çok teşekkürler, emeğinize sağlık. Konu benim açımdan çözüme kavuşmuştur.

System.Text.Encoding.Default

ile

Encoding.GetEncoding("windows-1254")

arasında bir fark varmı ?


drummers, 11-05-2009 tarihinden beri AccessTr.neT üyesidir.

alpeki99

alpeki99

Uzman
6
Ol....
 39
 162
 6.134
 29/10/2008
 Bursa
 Yazılım Geliştirici
 Ofis 2010 32 Bit
 22/06/2019,10:56
Benim yazdığımda işletim sisteminin kodlaması hangisi ise -bende Türkçe Win yüklü- onun karakter kodlaması alınır. Mesela İngilizce veya Almanca olsaydı Türkçe karakterler yine sorunlu görünürdü.

Sizin yazdığınızda TXT dosyalarının kodlamasını 1254 yani ANSI olarak kabul eder ona göre gösterim yapar ancak UTF-8 ile kodlanmış bir dosya olsaydı bu defa ne sizin kod ne benimki işe yarardı.

Hangisini kullanırsanız kullanın esas olan TXT dosyanın hangi karakter seti ile kaydedildiğidir. Mesela sizin TXT dosyalarını ANSI olarak kodlanmış. Biz bu şekilde kullandık ancak farklı kodlamalar UTF-8 vs. söz konusu olduğunda dosya kodlamasını tespit edip çeviri işlemi yapmak lazım.

Kısacası farklı kodlama yapıları sözkonusu olmayacak ise her ikiside kullanılabilir.


AccessTr.Net teknik konular içeren bir sitedir. Bu tip sitelerde en iyi şekilde yardım alabilmeniz için Site Kurallarını mutlaka okumanız ve buna göre hareket etmeniz lazım.

...........

Konuyu Okuyanlar: 1 Ziyaretçi

Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
Çözüldü VB.NET Veritabanı İçinden İstedigim İsimdeki Kayıtları Listeleme Mettleshade 2 1.081 24/12/2016, 16:58
Son Yorum: Mettleshade
Çözüldü ExecuteReader Fonksiyon Hakkında drummers 2 2.285 30/09/2014, 08:54
Son Yorum: drummers
Çözüldü reportviewer hakkında umutakkaya 4 2.270 29/09/2014, 10:24
Son Yorum: alpeki99
Çözüldü Datagridview üzerinden kayıt güncelleme Hakkında umutakkaya 3 2.042 04/05/2014, 16:31
Son Yorum: umutakkaya
Çözüldü VB.net koduna çevirmek hakkında alican60 7 3.069 22/12/2013, 02:28
Son Yorum: drummers

Türkçe Çeviri: MCTR, Yazılım: MyBB, © 2002-2019 MyBB Group.