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.

Hasonló előadás


Az előadások a következő témára: "Állomány kezelés."— Előadás másolata:

1 Állomány kezelés

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

3 A rekordok vége CR, a file vége EOF
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 Példa "Lynne","Weldon","999 Wide Way","Aiken","SC","29803" <CR>
"Jim","Buck","1 Cow Lane","Aiken","SC","29801" <CR> "Tom","Thumb","PO Box 200","Aiken","SC"," " <EOF>

5 A rekordok azonos hosszúságúak, van hivatkozási számuk
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 Példa

7 Kezeléseik Open file Read, Write Close file

8 Általában a Form_Load-ban
Open Statement Általában a Form_Load-ban 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 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.

9 Input Output Append Random Open For olvasásra
Í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 Sequential Random Open "C:\VB6\myfile.txt " For Input As #6
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 Probléma: Az Open minősített teljes elérést kíván Vagy
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 Common Dialog használata ShowOpen metódussal

12 With dlgCommon Azaz.. Dim strFileName as String .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 Fájl lezárása Általános helyei: Close [#FileNumber]
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 Példák Close #6 Close #1, #3 Close

15 FreeFile Függvénnyel A rendszer adja Előnyei
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 Input utasítással olvasunk
Olvasás Open for Input Input utasítással olvasunk

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

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

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

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

22 For…. Next Write 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 Kill utasítás Nem lehet nyitva Törlés Kill „elérésiút"
Kill "A:\Names.txt"

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

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

26 Open név for Output Ha nincs, létrehozza Kiírás az áll-ba Close
Ú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 A rekordok azonos hosszúságúak, van hivatkozási számuk
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 Példa

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 Dim mudtPersonRecord As Person
Type/End Type Private Type Person intEmpNum As Integer strFName As String * 20 strLName As String * 30 strPhone As String * 12 curRate As 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 Open után lehet írni, olvasni is
Ha nem létezőt nyitunk, létrehozza üresen Egyszerre egy rekordot kezelhetünk

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

34 Általában a Form_Load-ban Do Until
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 Nyitva kell lennie "For Random" Általában:
Put Random file írására Nyitva kell lennie "For Random" Általában: mnuFileSave, mnuFileClose vagy Form_QueryUnload Close követi

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

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 Get Put: Példa Get #2, 1, mudtPersonRecord
txtLName.Text=mudtPersonRecord.strLName Put: mudtPersonRecord.strPhone=txtPhone.Text Put #2, 1, mudtPersonRecord

39 Length of File: a Fájl mérete byte-ban EOF helyett lehet használni
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 A fájlmutató értékét adja visza
Seek Függvény A fájlmutató értékét adja visza Seek(FileNumber) intNextRecord=Seek(3)

41 Kitörli az üres helyeket egy sztringből Trim ==> mindkét végéről
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 Sub GetRecord(lngRecNum as Long) Get #1, lngRecNum, mudtPersonRecord
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 Sub PutRecord(lngRecNum as Long) With mudtPhoneRecord
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."

Hasonló előadás


Google Hirdetések