Lihtsamalt öeldes on fail a binaarne jada mingit tüüpi. Sisse Delphi, seal on kolm klassi faili: trükitud, tekst ja kirjutamata. Tüüpfailid on failid, mis sisaldavad teatud tüüpi andmeid, näiteks topelt-, täisarv- või varem määratletud kohandatud kirje tüüp. Tekstifailid sisaldavad loetavaid ASCII märke. Teksti sisestamata faile kasutatakse siis, kui soovitakse kehtestada failile võimalikult väike struktuur.
Trükitud failid
Kui tekstifailid koosnevad CR / LF-iga lõpetatud ridadest (#13#10) kombinatsioon, trükitud failid koosnevad teatud tüüpi andmestruktuuri andmetest.
Näiteks loob järgmine deklaratsioon kirjetüüpi nimega TMember ja TMember-i kirje muutujate massiivi.
tüüp
TMember = rekord
Nimi: nöör[50];
e-post:
nöör[30];
Postitused: LongInt;
lõpp;
var Liikmed: massiiv[1..50] of TMember;
Enne teabe kettale kirjutamist peame deklareerima failitüübi muutuja. Järgmine koodireal deklareerib F-faili muutuja.
var F: toimik TMember;
Märkus. Delfis trükitud faili loomiseks kasutame järgmist süntaks:
var SomeTypedFile: toimik Mõni tüüp
Faili põhitüübiks (SomeType) võib olla skalaar tüüp (nagu Double), massiivi tüüp või kirje tüüp. See ei tohiks olla pikk jada, dünaamiline massiiv, klass, objekt ega osuti.
Delphi failidega töötamise alustamiseks peame linkima kettale oleva faili meie programmi failimuutujaga. Selle lingi loomiseks peame kasutama AssignFile protseduur kettale faili seostamiseks failimuutujaga.
AssignFile (F, 'Members.dat')
Kui seos välise failiga on loodud, tuleb faili muutuja F avada, et seda lugemiseks ja kirjutamiseks ette valmistada. Kutsume olemasoleva faili avamiseks Reset-protseduuri või uue faili loomiseks kirjutame ümber. Kui programm lõpetab faili töötlemise, tuleb fail sulgeda, kasutades protseduuri CloseFile. Pärast faili sulgemist värskendatakse sellega seotud välist faili. Seejärel saab failimuutuja seostada mõne teise välise failiga.
Üldiselt peaksime alati kasutama erandi käsitlemine; failidega töötamisel võib tekkida palju vigu. Näiteks: kui kutsume faili, mis on juba suletud, CloseFile, teatab Delphi I / O tõrkest. Teisest küljest, kui proovime faili sulgeda, kuid pole veel nimeks AssignFile kutsutud, on tulemused ettearvamatud.
Kirjutage faili
Oletame, et oleme täitnud hulga Delphi liikmeid nende nimede, e-kirjade ja postituste arvuga ning soovime selle teabe salvestada kettale faili. Töö teeb järgmine kood:
var
F: toimik TMember;
i: täisarv;
alustada
AssignFile (F, 'liikmed.dat');
Kirjuta ümber (F);
proovida
jaoks j: = 1 kuni 50 teha
Kirjuta (F, liikmed [j]);
lõpuks
CloseFile (F);
lõpp;lõpp;
Loe failist
Kogu teabe saamiseks failist 'liikmed.dat' kasutame järgmist kood:
var
Liige: TMember
F: toimik TMember;alustada
AssignFile (F, 'liikmed.dat');
Lähtesta (F);
proovida
samas mitte Eof (F) alustage
Loe (F, liige);
{DoSomethingWithMember;}
lõpp;
lõpuks
CloseFile (F);
lõpp;lõpp;
Märge: Eof on EndOfFile'i kontrollimise funktsioon. Kasutame seda funktsiooni veendumaks, et me ei ürita lugeda faili lõpust kaugemale (peale viimast salvestatud kirjet).
Otsimine ja positsioneerimine
Failidele pääseb tavaliselt juurde järjestikku. Kui faili loetakse standardprotseduuri abil Loetakse või kirjutatakse tavaprotseduuri kirjutamise abil, liigub faili praegune asukoht järgmisele numbriliselt järjestatud failikomponendile (järgmine kirje). Tüüpfailidele pääseb juurde juhuslikult ka tavaprotseduuri otsimise kaudu, mis teisaldab faili praeguse asukoha määratud komponenti. FilePos ja FileSize funktsioone saab kasutada faili praeguse asukoha ja praeguse faili suuruse määramiseks.
{tagasi algusesse - esimene kirje}
Otsige (F, 0);
{mine viiendale rekordile}
Otsige (F, 5);
{Hüppa lõppu - "pärast" viimast kirjet}
Otsige (F, FileSize (F));
Muutke ja värskendage
Olete just õppinud, kuidas kirjutada ja lugeda kogu liikmete arvu, kuid mis siis, kui soovite vaid kümnendat liiget otsida ja e-posti aadressi muuta? Järgmine protseduur teeb täpselt nii:
protseduur Muuda meiliaadressi(const RecN: täisarv; const Uus Email: nöör) ;var DummyMember: TMember;alustada
{määrake, avage, erandite käsitlemise plokk}
Otsige (F, RecN);
Loe (F, DummyMember);
DummyMember. E-post: = NewEMail;
{Loe edasi järgmisele plaadile, peame
pöörduge tagasi algse kirje juurde ja kirjutage siis}
Otsige (F, RecN);
Kirjuta (F, DummyMember);
{sulge fail}lõpp;
Ülesande täitmine
Nii see on - nüüd on teil kõik, mida vajate oma ülesande täitmiseks. Saate liikmete andmeid kettale kirjutada, seda tagasi lugeda ja isegi mõnda faili keskel asuvat teavet (näiteks e-posti aadressi) muuta.
Oluline on see, et see fail pole ASCII fail, nii see välja näeb Märkmik (ainult üks kirje):
.Delphi juhend g Ò5 · ¿ì. 5.. B V.Lƒ, „¨[email protected]Ï.. ç.ç.ï..