Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Állomány kezelés. 2 Állományok Az állományok háttértárolón vannak Adatokat tartalmaznak Rekordok==>Sorok Mezők==>Adat elemek a sorokon belül.

Hasonló előadás


Az előadások a következő témára: "Állomány kezelés. 2 Állományok Az állományok háttértárolón vannak Adatokat tartalmaznak Rekordok==>Sorok Mezők==>Adat elemek a sorokon belül."— Előadás másolata:

1 Állomány kezelés

2 2 Állományok Az állományok háttértárolón vannak Adatokat tartalmaznak Rekordok==>Sorok Mezők==>Adat elemek a sorokon belül

3 3 Szekvenciális A rekordok vége CR, a file vége EOF A mezők vesszővel vannak elválasztva –Változó hossz –Sztringek idézőjelek között (a számok nem) Csak sorosan olvasható –Minden előző mezőt el kell olvasni az eléréshez

4 4 Példa "Lynne","Weldon","999 Wide Way","Aiken","SC","29803" "Jim","Buck","1 Cow Lane","Aiken","SC","29801" "Tom","Thumb","PO Box 200","Aiken","SC"," "

5 5 Random A rekordok azonos hosszúságúak, van hivatkozási számuk A mezők fix hosszúak és pozíciójúak –A hossznál kisebb adatok szóközökkel kiegészítődnek –A nagyobbak csonkolódnak Tetszőleges sorrendben olvasható/írható Táblázatszerűen képzelhető el

6 6 Példa

7 7 Kezeléseik Open file Read, Write Close file

8 8 Open Statement Általában a Form_Load-ban A hosszú elérési út helyett helyezzük az aktuális projekt alkönyvtárba az állományunkat, majd használjuk a App.Path kifejezést. Open „elérésiút_állománynév" For {Input|Output|Append|Random} As #FileSorszám [Len=hossz] FileSorszám = 1 to 511, hossz Max = 32,767

9 9 Open For Input – olvasásra Output –Írásra, BOF-t helyez el, majd felülír Append –Az EOF-tól kezd írni Random –Közvetlen elérésű állományokat olvas/ír

10 10 Példák Sequential Open "C:\VB6\myfile.txt " For Input As #6 Open "A:\myfile.txt " For Output As #1 Open App.Path & “\myfile.txt " For Append As #2 Random Open "A:\myfile.txt " For Random As #3 Len=60

11 11 File elérési útja Probléma: Az Open minősített teljes elérést kíván Vagy –Minden állomány a projekt alkönyvtárban –App.Path Dim strPath as String strPath=App.Path & "\Filename.extension" Open strPath for Input as #4 Vagy –Common Dialog használata ShowOpen metódussal

12 12 Azaz.. Dim strFileName as String With dlgCommon.DialogTitle = "Open".CancelError = False.Filter = "All Files (*.*)|*.*".ShowOpen If Len(.FileName) = 0 Then Exit Sub End If strFileName=.FileName End With Open strFileName for Input as #1

13 13 A Close utasítás Fájl lezárása Általános helyei: – Form_Unload, mnuFileSave, mnuFileSaveAs, mnuFileExit Close [#FileNumber] Ha a FileNumber hiányzik, akkor minden nyitott fájl (Az END is lezár, de nem helyes)

14 14 Példák Close #6 Close #1, #3 Close

15 15 FileNumber FreeFile Függvénnyel A rendszer adja Előnyei –Nincs összeakadás más alkalmazásokkal –Nem kell nyilvántartani Dim intFileNumber as Integer intFileNumber=FreeFile Open "Names.txt" For Output As #intFileNumber

16 Szekvenciális állományok

17 17 Olvasás Open for Input Input utasítással olvasunk

18 18 Input Általában a Form_Load-ban Do Until EOF Input #FileNumber, List of variables Input #2, strCourseNum, strClass, intHours

19 19 Input Dim strVideoTitle as String Do Until EOF(3) Input #3, strVideoTitle cboVideoTitle.AddItem strVideoTitle Loop Figyelem, számegyezés!!

20 20 Write Open For Output!! Általános helyei: –mnuFileSave, mnuFileClose, Form_QueryUnload Close-zal zárul

21 21 Write Példa Write #FileNumber, List of variable or fields Write #1, txtFirstName, txtLastName, txtStreet, txtCity, txtxState, txtPhone Write #2, strCourseNum, strClass, intHours

22 22 Write For…. Next Dim intIndex as Integer Open "A:\videos.txt" For Output As #1 For intIndex=0 to cboVideoTitle.ListCount-1 Write #1, cboVideoTitle.ListIndex Next intIndex Close #1

23 23 Törlés Kill utasítás Nem lehet nyitva Kill „elérésiút" Kill "A:\Names.txt"

24 24 Átnevezés Name utasítás Nem lehet nyitva ReName „régi_elérés" As „Újelérés" ReName "A:\Names.txt" As "A:\People.txt"

25 25 Átírás Vátoztatások mentése 1.Open eredeti for Input 2.Open temp file for Output 3.Beolvasás pl. textboxba az eredetiből 4.Kiírás textboxból a temp-be 5.Close 6.Kill eredeti 7.Name temp

26 26 Új létrehozása Open név for Output Ha nincs, létrehozza Kiírás az áll-ba Close

27 Közvetlen elérésű állományok

28 28 Random A rekordok azonos hosszúságúak, van hivatkozási számuk A mezők fix hosszúak és pozíciójúak –A hossznál kisebb adatok szóközökkel kiegészítődnek –A nagyobbak csonkolódnak Tetszőleges sorrendben olvasható/írható Táblázatszerűen képzelhető el

29 29 Példa

30 30 Rekord struktúra definiálása Még mielőtt I/O történik Type/End Type Helye: General Declarations Fix hosszúságú sztringeket alkalmazzunk!! –Pl: Dim strFName as String * 20

31 31 Type/End Type Private Type Person intEmpNumAs Integer strFNameAs String * 20 strLNameAs String * 30 strPhoneAs String * 12 curRateAs Currency End Type Dim mudtPersonRecord As Person Open App.Path & "\Names.dat" For Random as #1 Len=Len (mudtPersonRecord) Lehetőség: mudt prefix a User Defined Type-hoz….

32 32 Open Open után lehet írni, olvasni is Ha nem létezőt nyitunk, létrehozza üresen Egyszerre egy rekordot kezelhetünk

33 33 Olvasás Open állomány for Random Get utasítás

34 34 Get Általában a Form_Load-ban Do Until Get #FileNumber, [RecordNumber], RecordName Get #2, 4, mudtPersonRecord Get #2, intRecordNumber, mudtPersonRecord Ha a RecordNumber hiányzik, a következőt olvassuk

35 35 Put Random file írására Nyitva kell lennie "For Random" Általában: – mnuFileSave, mnuFileClose vagy Form_QueryUnload Close követi

36 36 Put Put #FileNumber, [RecordNumber], RecordName Put #2, 4, mudtPersonRecord Put #2, intRecordNumber, mudtPersonRecord Ha RecordNumber hiányzik, a következőt olvassuk

37 37 Mezőkhöz való hozzáférés Get és Put „pont jelölés”, segítség a User Defined Type megnézése

38 38 Példa Get Get #2, 1, mudtPersonRecord txtLName.Text=mudtPersonRecord.strLName Put: mudtPersonRecord.strPhone=txtPhone.Text Put #2, 1, mudtPersonRecord

39 39 LOF Függvény Length of File: a Fájl mérete byte-ban EOF helyett lehet használni Maxrekszám=LOF/rekméret LOF(FileNumber) LOF(3) intNumRecords=LOF(3)/Len(mudtPersonRecord)

40 40 Seek Függvény A fájlmutató értékét adja visza Seek(FileNumber) intNextRecord=Seek(3)

41 41 Trim Függvény Kitörli az üres helyeket egy sztringből Trim ==> mindkét végéről LTrim==> left RTrim ==> right Trim(String) LTrim(String) RTrim(String) txtLName.Text=RTrim(mudtPersonRecord.strLName)

42 42 Példa Sub GetRecord(lngRecNum as Long) Get #1, lngRecNum, mudtPersonRecord With mudtPhoneRecord txtEmpNum.Text =.intEmpNum txtFName.Text = RTrim(.strFName) txtLName.Text = Rtrim(.strLName) txtPhone.Text = Rtrim(.strPhone) txtRate.Text =.curRate End With End Sub

43 43 Példa Sub PutRecord(lngRecNum as Long) With mudtPhoneRecord.intEmpNum=Val(txtEmpNum.Text).strFName = txtFName.Text.strLName = txtLName.Text.strPhone = txtPhone.Text.curRate = Val(txtRate.Text) End With Put #1, lngRecNum, mudtPersonRecord End Sub


Letölteni ppt "Állomány kezelés. 2 Állományok Az állományok háttértárolón vannak Adatokat tartalmaznak Rekordok==>Sorok Mezők==>Adat elemek a sorokon belül."