film indir
Aralık
11th 2007
Rasgele Erişimli Dosyaya Yazma Ve Okuma

Posted under Visual Basic



RASGELE ERİŞİMLİ DOSYAYA YAZMA VE OKUMA

Random modu ile açılan dosyaya bilgi yazmak için Put, bilgi okumak için ise Get komutu kullanılır.

Random dosya açma komutu

Open “dosya yolu ve adı” for random as #dosya no

Açılan bu random dosyaya bilgi yazmak ve okumak için

Put #dosya no, kayıt no, değişken         Bilgi yazmak için
Get #dosya no, kayıt no, değişken         Bilgi okumak için


Dosya no: Open komutu ile belirlenen dosya numarasıdır.
Kayıt no : Yazılacak ve okunacak bilginin dosyadaki kayıt numarası
Değişken : Kaydedilecek bilginin bulunduğu değişken

Yazma ve okuma işlemi için kullanılan komut satırına baktığımız zaman sadece bir değişken kullanıldığını görürüz. Yani kayıt yaparken tek bir değişken kaydedebiliriz. Bizim programımızda sadece tek bir değişken kaydedilmeyebilir. Birden fazla kayıt yazacağımız zaman başka metodlar kullanmalıyız.

Örneğin tek bir kayıt yazılacağını düşünürsek işlem kolay

Private Sub Command1_Click()
Open “c:\ert.txt” For Random As #1
Dim x
Put #1, 1,x
x=Text1
Close #1
End Sub

Bu program satırları ile yalnızca text1’deki bilgiyi dosyaya yazabiliriz. Fakat birden fazla text kutularımız varsa yada birden fazla değişkenin içeriğini kaydetmek istiyorsak ne yapmalıyız?
Bu soruya verilebilecek en güzel cevap Kullanıcı tarafından yeni tip oluşturulmasıdır. Yani değişkenlerimizi Tip içinde tanımlayacağız.

Bu işlem için Kod penceremizin en üst bölümüne yani General kısmına şu şekilde tip oluşturacağız. Bunu yapmamızın nedeni tanımladığımız değişkenleri tek bir değişken altında toplayabilmemizdir.

Private Type kisi
adi As String
soyadi As String
okul As String
yaşı As Integer
End Type
Dim ert As kisi
Artık bilgileri alacağımız zaman

adi=text1.text

diye tanımlamayacağız. Bunun yerine

ert.adi = Text1.Text

kullanacağız. Hani bütün değişkenleri tek bir değişken altında toplayacağız demiştik. Şimdi bu değişkenlere bilgi girelim ve bu bilgileri kaydedelim.

Private Sub Command1_Click()
Open “c:\ert.txt” For Random As #1
ert.adi = Text1.Text
ert.soyadi = Text2.Text
ert.okul = text3.Text
ert.yasi = text4.Text
Open “c:\ert.txt” For Random As #1
Put #1, 1, ert
Close #1
End Sub

Koda bakıldığı zaman tüm değişkenlerimizi bir tip içinde tanımladık. Ve bu değişkenlere tip değişkeni ile beraber(ert) bilgi girdik. Bu bilgileri random olarak açtığımız dosyaya kaydettik ve bu dosyayı Close #1 komutu ile açtığımız dosyayı kapatıyoruz. Burada dikkat etmemiz gereken nokta açtığımız dosyayı işimiz bitince kapatmamızdır. Çünkü program büyüdükçe yanlışlıkla aynı dosya iki defa açılmak istenebilir. Bu durumda da hata ile karşılaşırız.

Şimdiye kadar olan kısımda tip tanımlayıp, bu tipe veri girilmesini ve bu tipin random dosyaya yazılmasını gördük şimdi ise bir dosyadan nasıl bilgi okunacağını göreceğiz.

Bilgileri dosyadan okuyacağımız zaman yine aynı şekilde kullanıcı tipine ihtiyacımız olacak. Ama kullanıcı tarafından ayrı bir tip tanımlamaya gerek yok. Az önce oluşturduğumuz tipi tekrar kullanacağız.

Private Sub Command2_Click()
Open “c:\ert.txt” For Random As #1
Get #1, 1, ert
Text1 = ert.adi
Text2 = ert.soyadi
Text3 = ert.okul
Text4 = ert.yasi
Close #1
End Sub

Burada dosya numarası 1 olan ve dosya numarası 1 olan kayıttaki bilgileri ert tipine aktarıyoruz. Daha sonra ert tipinde bulunan değişkenleri text kutularına yazdırıyoruz.

Dosyamızda birden fazla kayıt olabilir. Örneğin bir işyerindeki çalışanların kayıtlarını tutuyorsak çalışanların sayısı kadar kayıtımız olmalıdır.

Put #1, val(text5), ert  dersek kayıt numarasını biz belirleyeceğimiz için istediğimiz kadar kayıt yapabiliriz. Put yerine Get komutu getirilerek dosya içinde istenilen kayıta erişebiliriz.

Şimdiye kadar tip içinde birden fazla değişken kullanarak bilgileri aldık. Bir düşünelim, bir kişiye ait 30 bilgi alacağımızı. Bu tip içinde 30 tane değişken mi kullanacağız. Bunun içinde bir çözümü var. Bu gibi durumlarda değişken yerine dizileri kullanacağız. Ayrıca text kutularını kopyala yapıştır yöntemiyle çoğaltmalıyız ki index numaraları oluşsun.

Örneğimiz için :
1. Formumuza 1 tane text kutusu yerleştiriyoruz.
2. Bu text kutusunun üzerine fareyi sağ tıklayıp copy komutunu veriyoruz.
3. Formun boş bir alanında  fareyi sağ tıklayıp paste komutunu veriyoruz.
4. Gelen soruya evet cevabını veriyoruz.
5. 3. işlemi yerleştirmek istediğimiz text kutusu kadar yapıyoruz.

Tip tanımlama işlemini yapıyoruz.

Private Type bilgi
kisi(4) As String
End Type
Dim ert As bilgi

Bu defa değişken yerine 4 elemanlı dizi kullandık.

Private Sub Command1_Click()
Dim i As Integer
Open “c:\ert.txt” For Random As #1
For i = 0 To 3
ert.kisi(i) = Text1(i).Text
Next
Put #1, val(text2), ert
Close #1
End Sub

Formumuzda 4 tane text kutusu var bunların adları text1(0),text1(1),text1(2),text1(3) oldu kopyala yapıştır yöntemi ile.

Text kutularımızı diziye for döngüsü ile aktarmış olduk. Bu şekilde bir çok kayıt diziler yardımı ile kaydedebiliriz.

Okuma işlemi için ise

Private Sub Command2_Click()
Dim i As Integer
Open “c:\ert.txt” For Random As #1
Get #1, val(text2), ert
For i = 0 To 3
Text1(i).Text= ert.kisi(i)
Next
Close #1
End Sub

Böylece Random dosyaya nasıl bilgi yazıldığını ve okunduğunu gördük.

Ama bizim yaptığımız programlarda dosya numarasını hep kullanıcı tarafından girilmesini istedik.
Şimdi kullanıcı tarafından dosya numarası girilmeden nasıl kayıt yapılacağını göreceğiz.
Bunun için döngü ve karşılaştırmaları kullanacağız.

Dosyamızı random modunda açıyoruz. Kayıt yapacaksak ilk boş kayıdı aratıyoruz.  
Örneğimizde 100 kayıt oluşturacağımızı düşünelim

Open “c:\ert.txt” For Random As #1
For i = 1 To 100
    Get #1, i, ert
    If (ert.adi = “”) Then
    ert.adi = Text1
    ert.soyadi = Text2
    ert.okul = Text3
    ert.yasi = Text4
    End If
Next
Put #1, i, ert
Close#1

Programımızda ad kısmının boş oluğu ilk kayıda bilgilerimizi kaydediyor. Burada for döngüsü ve if şartı ile dosya numaraları tek tek dolaşılıyor ve bu dosya numaralarında ad kısmının boş olduğu kayıt bulunduğu zaman bu kayıda bilgilerimizi kaydediyor.

Aynı şekilde arama yapmak içinde dosya numarasını bilmemiz gerekmiyor. Ad ve soyada göre arama yaptırmak mümkün. Bunun içinde döngü ve karşılaştırmaları kullanacağız.

Open “c:\ert.txt” For Random As #1
For i = 1 To 100
    Get #1, i, ert
    If (text1=ert.adi and text2=ert.soyadi) Then
    Text3 =ert.okul
    Text4 =ert.yasi
    End If
Next
Close#1

Burada text1 e girilen ad ve text2 ye girilen soyada göre arama yapıyoruz. Ve bulunan bilgiler text3 ve text4’e yazdırılıyor.

Trackback URI | Comments RSS

Yorum Yaz - Leave a Reply

yeliiniz Silinmitir.Ltfen Sayfanzdan Kodu Kaldrnz. Sayfa Bloggoayrılık yazılarıoyunlarkurye web tasarımı broşürlük dizi izle dizi izleKombi Tesisat Radyo DinleChat paysafe paysafe kartSohbet arkadaş travestitravesti travesti travesti Film izle Sicak Videolar Porno izle film izle e-okul arog Ask-i Memnu Sehitler Olmez sohbet Chat K�zlarla Sohbet sohbet chat kale kapi mirc Bedava Program Yukle Turkce Program Indir Celik Konstr�ksiyon evden eve nakliyat Toplist