VB2010'da txt dosyasında bir satırda bulunan 2 kelimeyi ayrı ayrı nasıl okutabilirim?

  • Konuyu başlatan Konuyu başlatan A_day
  • Başlangıç tarihi Başlangıç tarihi

A_day

Öğrenci
Katılım
4 Şubat 2014
Mesajlar
41
Reaksiyon puanı
0
Puanları
6
Ben uzun zaman VB6 ile amatörce uğraştım. VB2010'a geçiş yapmak istedim ama VB6'da çok rahat yaptığım şeyleri VB2010'da yaptırmakta zorlanıyorum. Örneğin;

VB6'da her satırında 2 kelime olan, kelimelerin birbirinden virgül ile ayrıldığı bir *.txt dosyasına her gidişte 2 kelime okuyup gelecek ve bunu 2 ayrı text kutusuna sırayla yazacak kod aşağıdaki gibiydi.

Open App.Path + "\TurEng.txt" For Input As #1
Do While Not EOF(1)
Input #1, Turkce, Ingilizce
Text1.Text = Turkce
Text2.Text = Ingilizce
Loop
Close #1


VB2010'da ise aşağıdaki kodlarla, her satırda yine 2 kelime olan ama kelimelerin birbirinden büyük boşluklarla ayrıldığı bir *.txt dosyasını, yine her defasında 1 satır okutabiliyorum ama o satırdaki 2 kelimeyi de birden alıp geliyor.

Her defasında 1 satır ama o satırda bulunan kelimeleri ayrı ayrı nasıl okutabilirim ?

FileOpen(1, Application.StartupPath & "\TurEng.txt", OpenMode.Input)
Do While Not EOF(1)
TextBox1.AppendText(LineInput(1) & vbNewLine)
Loop
FileClose(1)
 

A_day

Öğrenci
Katılım
4 Şubat 2014
Mesajlar
41
Reaksiyon puanı
0
Puanları
6
Konuyu biraz daha detaylı yazayım. Sanırım böyle daha rahat yardımcı olabilirsiniz...

2 ad Textbox ve 1 Button yardımıyla, TurEng.txt dosyasına, her satırda 2 kelime olacak şekilde, istediğim kadar 2'li kelimeleri aşağıdaki mantıkla yazdırabiliyorum :

Private Sub DosyayaYaz_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DosyayaYaz.Click
FileOpen(1, Application.StartupPath & "\TurEng.txt", OpenMode.Append)
PrintLine(1, TextBox1.Text, TextBox2.Text)
FileClose(1)
End Sub

Bu kodlar TurEng.txt dosyasına kelimeleri aşağıdaki formatta yazıyor :

(Aşağıdaki örnekler arasına 8 karekterlik boşluklar koyuyorum ama önizleme yapınca boşluklar yok oluyor. Oysaki TurEng.txt dosyasını açtığımda, aynı satırdaki kelimeler arasında 8 karekterlik boşluklar mevcut. Aşağıdaki örneklere bu gözle bakınız)

kedi cat
köpek dog
ağaç tree
.
.
.

Göreceğiniz gibi kelimeler arasında virgül yok, sadece boşluk var.

Benim çözemediğim sorun şu :

Kelimeleri nasıl ki 2 textbox yardımıyla 2'li, 2'li yazdırdıysam, aynı şekilde 2'li 2'li de geri okutmak istiyorum. Ancak örneğin ilk satırı okumaya gittiğinde textbox1'e "kedi", textbox2'ye "cat" yazmalı. Ancak şu anda okumaya gidiyor ve textbox1'e "kedi cat" şeklinde yazıyor. Yani satırdaki 2 kelimeyi toptan alıp geliyor. Oysaki nasıl

PrintLine(1, TextBox1.Text, TextBox2.Text)

koduyla 2 kelimeyi, 2 ayrı textboxdan, ayrı ayrı yazdırdı isem aynı şekilde okuturken de aynı formatta kelimeler ayrı ayrı gelsin ve 2 ayrı textbox'a yazılsın istiyorum.
 

sinan60

Öğrenci
Katılım
3 Eylül 2009
Mesajlar
81
Reaksiyon puanı
1
Puanları
8
Split metodunu kullanarak yapabilirsin.
 

A_day

Öğrenci
Katılım
4 Şubat 2014
Mesajlar
41
Reaksiyon puanı
0
Puanları
6
Teşekkür ediyorum ama keşke kodları da yazıverseydiniz. Çünkü daha çok yeniyim...
 

A_day

Öğrenci
Katılım
4 Şubat 2014
Mesajlar
41
Reaksiyon puanı
0
Puanları
6
Arkadaşlar sağdan soldan aldığım yardımları harmanlayıp sorunumu çözdüm gibi. İlgilenen herkese teşekkürler ediyorum. Kodların tamamını başkalarının da işine yarasın diye ekliyorum.


Bu kodlarla bir txt dosyasına 2'li kelimeler ekleyebilir ve aynı txt dosyasından 2'li kelimeleri satır satır okutabilirsiniz...


Bu kodlarla sorunumu kısmen çözmüş oldum. Yeni bir konu açıp aşamadığım kısmı birazdan soracağım. Buraya kadarki yardımlarınız için sağolun...


Kod:
Public Class Form1


    Dim Turkce, Ingilizce As String
    Dim i, j As Integer


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        i = 0
        j = 0
        TextBox1.Focus()
    End Sub


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DosyayaYaz.Click
        FileOpen(1, Application.StartupPath & "\TurEng.txt", OpenMode.Append)
        PrintLine(1, TextBox1.Text, TextBox2.Text)
        TextBox1.Text = ""
        TextBox2.Text = ""
        TextBox1.Focus()
        FileClose(1)
    End Sub


    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DosyadanOku.Click
        TextBox1.Text = ""
        TextBox2.Text = ""
        i = i + 1
        For Each line As String In System.IO.File.ReadAllLines(Application.StartupPath & "\TurEng.txt")
            j = j + 1
            If j <= i Then
                Turkce = line.Substring(0, line.IndexOf(" "))
                Ingilizce = line.Remove(0, (line.IndexOf(" ") + 1))
            Else
                Exit For
            End If
        Next
        j = 0
        TextBox1.Text = TextBox1.Text + Turkce + vbCrLf
        TextBox2.Text = TextBox2.Text + Ingilizce + vbCrLf
    End Sub


    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Kapat.Click
        End
    End Sub


End Class
 

A_day

Öğrenci
Katılım
4 Şubat 2014
Mesajlar
41
Reaksiyon puanı
0
Puanları
6
Arkadaşlar, bu kodlarla sorunumu kısmen çözmüş olduğumu yazmıştım. Sorunumun, txt dosyasına istediğim formatta kayıtlar yaptırma kısmını yardımlarınızla çözdüm.
Kod:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DosyayaYaz.Click
    FileOpen(1, Application.StartupPath & "\TurEng.txt", OpenMode.Append)
        PrintLine(1, TextBox1.Text, TextBox2.Text)
    FileClose(1)
End Sub
Üstteki kodlarla bir txt dosyasına, 2 ayrı TextBox yardımıyla, 2 kelimeyi, tırnak içinde ve aralarında virgül olacak şekilde aşağıdaki formatta kaydedebiliyorum.
Kod:
"kedi","cat"
"köpek","dog"
"ağaç","tree"
Aslında benzer bir mantıkla bu kayıtları geri okuma yaptırabilmem lazım.
Kod:
FileOpen(1, Application.StartupPath & "\TurEng.txt", OpenMode.Input)
    Do While Not EOF(1)
        TextBox1.AppendText([B]LineInput(1)[/B] & vbNewLine)
        TextBox2.AppendText([B]LineInput(1)[/B] & vbNewLine)
    Loop
FileClose(1)
Bu kodlarla txt dosyasından veriler...
Kod:
Textbox1.Text'e   "kedi","cat"
Textbox2.Text'e   "köpek","dog"
şeklinde geliyor. Oysa benim istediğim; ilk kelimeyi TextBox1'e, 2. kelimeyi TextBox2'ye yazdırabilmek.


Ancak Input'un doğru kullanım şeklini kaç gündür araştırmama rağmen henüz bulamadım.


Burada 2 sorun var;
1) txt dosyasına yazarken olduğu gibi, satırdan kelimeleri okurken de kelimeleri ayrı ayrı okumalı. Fakat bu kodlar iki kelimeyi bütün olarak okuyor.
2) Satırı okurken tırnaklar ve virgülle birlikte okuyor.


Yapmaya çalıştığım proje, bu noktada tıkandı kaldı. Bu sorunu çözemezsem, ilerlemem mümkün değil. Sorunumu aşmama yardımcı olabilirseniz çok sevineceğim...
 

sinan60

Öğrenci
Katılım
3 Eylül 2009
Mesajlar
81
Reaksiyon puanı
1
Puanları
8
Kod:
Dim oku() As String = System.IO.File.ReadAllLines("1.txt")//1.txt yazan yere dosya adını yazarsın. Bu fonksiyon tüm dosyayı okuyup string dizisine atar
        Dim kelime() As String = oku(0).Split(",")//burda sadece ilk satır için işlem yapar.Diğer satırlar için oku() nun indisini değiştirmen yeter.
        TextBox1.Text = kelime(0)
        TextBox2.Text = kelime(1)
 

A_day

Öğrenci
Katılım
4 Şubat 2014
Mesajlar
41
Reaksiyon puanı
0
Puanları
6
İlgilendiğiniz için teşekkür ediyorum.

Vermiş olduğunuz kodları uyguladığımda aşağıdaki gibi bir hata mesajı aldım.



Hata veren son satırı sildiğimde ise;



böyle bir sonuç alıyorum.

Öncelikle TextBox1'e ilk kelime, TextBox2'ye 2. kelime yazılmalı. Burada gördüğüm kadarıyla TextBox1'e ilk satırı olduğu gibi yazıyor. Yani ilk satırdaki 2 kelimenin tamamını yazıyor. Her 2 TextBox'a 2 kelimeyi ayrı ayrı yazdırmam lazım. Kodu bu şekilde revize edebilirseniz mutlu olurum...
 

sinan60

Öğrenci
Katılım
3 Eylül 2009
Mesajlar
81
Reaksiyon puanı
1
Puanları
8
Ben kodu iki kelime arasında virgül var gibi düşünmüştüm. 8 karakter boşluk var ise Split('\t') olarak değiştirmelisin.
 

A_day

Öğrenci
Katılım
4 Şubat 2014
Mesajlar
41
Reaksiyon puanı
0
Puanları
6
txt dosyası içindeki kelimelerin arasında boşluk yok. Kelimeler tırnak içinde ve aralarında virgül var. Buna göre yardımcı olursanız sevinirim...

Kod:
[COLOR=#333333]"kedi","cat"[/COLOR]"köpek","dog"
"ağaç","tree"
 
Üst