You are on page 1of 16

Fájlkezelés 1.

Készítette Ipcsics Csilla


Házi feladat ellenőrzése
Egy kertész az első vevőnek eladta összes almáinak a felét és
még egy fél almát.
A második vevő megkapta a maradék almák felét és még egy
fél almát.
A harmadik vevő ismét elvitte a maradék almák felét és még
egy fél almát, és így tovább, egészen a hetedik vevőig. Ezzel
az összes alma elfogyott.
Hány almája volt a kertésznek?
Nincs megoldás,
de ha nem vesszük az egész részét,
HF ellenőrzése akkor 127 alma!

Public Class Form1


Dim alma As Single
Dim s As Single = -1
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
alma = 0
Próbálgatjuk az értékeket! Label1.Text = ""
Do Until s = 0 Or alma > 1000 'Tegyünk bele egy féket, ha nem lenne megoldás
alma += 1
Az aktuális értéket s = alma
beletesszük s-be. For i = 1 To 7
s = s - Int(s / 2) - 1 / 2
S-el elvégezzük a Next
feladatot, s ha elfogy az Loop
alma, ez a megoldás! If alma > 1000 And s <> 0 Then
Label1.Text = "Nincs megoldás!"
Else
Label1.Text &= "Ennyi alma volt a kosárban: " & alma & vbNewLine
End If
End Sub
End Class
Olvasás szövegfájlból (minden adat külön sorban van)

1. Ha nem fix az út, akkor létrehozunk egy változót: Dim Út As String

2. Létrehozunk egy IO. StreamReader típusú változót: Dim Fájl As IO.StreamReader

3. Bekérjük az utat: Út=„elérési út”

4. IO.StreamReader típusú objektum létrehozása:


Fájl = New IO.StreamReader(Út [,kódolás]))
elérésiút: a fájl relatív vagy abszolút elérési útja sztringként megadva
kódolás: a System.Text.Encoding osztály osztálytulajdonsága,
például: System.Text.Encoding.ASCII, Default, Unicode, UTF8, WindowsCodePage

5. Egy sor beolvasása a sor változóba: Sor = Fájl.ReadLine()


ciklus
6. Sor feldolgozása

7. A fájl lezárása (elmulasztása adatvesztéssel járhat!): Fájl.Close()

8. Az objektumváltozó felszabadítása: Fájl.Dispose()


Feladat 1.
Olvassuk be a számok.txt állomány első adatát! Helye a fordítási környezet, bin\debud
mappa!

Public Class Form1


Dim Fájlbe As IO.StreamReader
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Fájlbe = New IO.StreamReader("számok.txt")
Label1.Text = "Első adat: " & Fájlbe.ReadLine
Fájlbe.Close()
Fájlbe.Dispose()
End Sub
End Class
Feladat 2.
Olvassuk be a számok.txt állomány első 3 adatát! Helye a fordítási környezet, bin\
debud mappa!
Public Class Form1
Dim Fájlbe As IO.StreamReader

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click


Fájlbe = New IO.StreamReader("számok.txt")
For i = 1 To 3
Label1.Text &= i & ". adat: " & Fájlbe.ReadLine & vbNewLine
Next
Fájlbe.Close()
Fájlbe.Dispose()
End Sub
End Class
Feladat 3.
Olvassuk be a számok.txt állomány első 15 adatát! Helye a fordítási környezet, bin\
debud mappa!

Mi a hiba?
Állomány vége
1. EndOfStream Elértük-e a stream végét (True/False).
2. Peek Beolvassa a következő karakter kódját, de nem
módosítja az aktuális pozíciót.
Visszatérési értéke –1, ha elértük a stream végét.

Tehát, előre nem tudjuk, hány sort tartalmaz


feltételes ciklussal vezéreljük le!
Feladat 4.
Olvassuk be a számok.txt állomány összes adatát! Helye a fordítási környezet, bin\
debud mappa!
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
Fájlbe = New IO.StreamReader("számok.txt")
Dim i As Integer
Do Until Fájlbe.EndOfStream
Label1.Text &= i & ". adat: " & Fájlbe.ReadLine & vbNewLine
i = i + 1
Loop Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
Fájlbe = New IO.StreamReader("számok.txt")
Fájlbe.Close() Dim i As Integer
Fájlbe.Dispose() Do Until Fájlbe.Peek = -1
End Sub Label1.Text &= i & ". adat: " & Fájlbe.ReadLine & vbNewLine
i = i + 1
Loop
Fájlbe.Close()
Fájlbe.Dispose()
End Sub
Feladat 5.
1. A nevek.txt állományban minden adat külön sorban van!
2. Készíts programot, amely megjeleníti a neveket egymás
mellé vesszővel elválasztva!
Adatbeolvasás
 Már hozzáférünk az adatokhoz, de sajnos mindig csak az
aktuálishoz.
 Jó lenne letárolni!
 Sajnos nem tudjuk előre, hogy hány adat lesz, így nem tudunk
annyi változót létrehozni!
B(0)
Tömb alapok
B(1)
 A tömb azonos típusú adatok tárolására alkalmas.
B(2)
 A tömb elemeit az indexein keresztül érthetjük el.
Például a B tömb elemei B(0), B(1), B(2), B(3), B(4), B(5)... B(3)

 A tömbindexeknek van alsó határa mindig 0.

 Dim B(10) As Integer.


Ekkor az alsó indexhatár 0.
A B tömb 0-tól 10-ig indexelhető, 11 eleme van, minden eleme
egész.
Fájlbeolvasás
Tehát! Tömbbe kellene tárolni adatainkat!
De akkor sem tudjuk, hogy mekkora tömböt hozzunk létre!

1. Csalhatunk: ha tudjuk, hogy maximum 10 db, akkor a maximális


méretre dimenzionálunk, s legfeljebb ami nem kell, nem használjuk.
2. Mindig kérünk egy nagyobbat („újabb fiókot!”):
ReDim Preserve tömb(mekkorát)

Preserve= a régi maradjon meg!


Azaza ha volt a tömbünk: név(9), s kellene egy 11-ik fiók,
akkor: ReDim Preserve név(10). Ekkor az 0-9-ig megmarad az
érték, de a tömb 11 elemű lesz.
Feladat 6.
Olvassuk be a számok.txt állomány összes adatát, s tároljuk el egy szám tömbbe!
Helye a fordítási környezet, bin\debud mappa!
Private Sub Button6_Click_1(sender As Object, e As EventArgs) Handles Button6.Click
Dim i As Integer=0 Nem tudjuk előre mennyi
Dim szám() As Integer adatunk lesz!

Fájlbe = New IO.StreamReader("számok.txt")


Mindig annyira
Do Until Fájlbe.Peek = -1 dimenzionáljuk, amnnyit már
tudunk!
ReDim Preserve szám(i)
szám(i) = Fájlbe.ReadLine
Label1.Text &= i & ". adat: " & szám(i) & vbNewLine
i = i + 1
Loop
Fájlbe.Close()
Fájlbe.Dispose()
End Sub
Feladat 7-8. Önállóan
Készíts programokat, amely beolvassa, letárolja egy tömbbe és
kiírja a képernyőre (minden adat egy sorban vesszővel
elválasztva) a:
 be1.txt, valamint a

 magasság_2A.txt

állományokat!
Házi feladat
 Készíts programot, amely tartalmaz 4 Textboxot!
 Egyik a neveket írja ki egymás alá a Diák_név.txt állományból,
 A másik a magasságot írja ki egymás alá a Diák_magassag.txt
állományból,
 Harmadik a tömeget írja ki egymás alá a Diák_tömeg.txt
állományból,
 Negyedik a nemet írja ki egymás alá a Diák_neme.txt
állományból, ahol a false az adat, akkor a neme lány!

 Figyelj az adattípusokra, s az adatokra!

You might also like