Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
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