Egyszerűen fogalmazva egy fájl a bináris sorrend valamilyen típusú. Ban ben Delphi, három osztály létezik fájl: gépelt, szöveges és gépelés nélküli. A gépelt fájlok olyan fájlok, amelyek egy bizonyos típusú adatokat tartalmaznak, például dupla, egész szám vagy korábban meghatározott egyéni rekord típus. A szöveges fájlok olvasható ASCII karaktereket tartalmaznak. Az el nem írt fájlokat akkor használjuk, amikor a lehető legkevesebb szerkezetet akarjuk elrendelni egy fájlra.
Gépelt fájlok
Míg a szöveges fájlok olyan sorokból állnak, amelyeket CR / LF (#13#10) kombináció, A gépelt fájlok egy adott adatszerkezet-típusból vett adatokból állnak.
Például a következő deklaráció létrehoz egy TMember nevű rekordtípust és egy TMember rekordváltozók tömbjét.
típus
TMember = rekord
Név: húr[50];
email:
húr[30];
Hozzászólások: LongInt;
vég;
var tagok: sor[1..50] nak,-nek TMember;
Mielőtt megírhatnánk az információkat a lemezen, deklarálnunk kell egy fájltípus egy változóját. A következő kódsor F fájlváltozót deklarál.
var F: fájl TMember;
Megjegyzés: Gépelésű fájl létrehozásához a Delphi-ben a következőket használjuk szintaxis:
var SomeTypedFile: fájl sometype
A fájl alaptípusa (SomeType) lehet skalar típusú (például Double), tömb vagy rekord típus. Nem lehet hosszú karakterlánc, dinamikus tömb, osztály, objektum vagy mutató.
A Delphi fájlokkal való munka elindításához a lemezen lévő fájlokat össze kell kapcsolnunk a programban található fájlváltozóval. Ezt a linket létre kell hoznunk AssignFile eljárás a lemezen lévő fájl társításához egy fájlváltozóval.
AssignFile (F, 'Members.dat')
Miután létrehozták a társítást egy külső fájllal, az F fájlváltozót „ki kell nyitni” az olvasáshoz és az íráshoz való előkészítéshez. Reset eljárást hívunk meglévő fájl megnyitásához, vagy Rewrite új fájl létrehozásához. Amikor egy program befejezi a fájl feldolgozását, a fájlt a CloseFile eljárással kell bezárni. Egy fájl bezárása után a társított külső fájl frissül. A fájlváltozó ezután társítható egy másik külső fájlhoz.
Általában mindig használnunk kell kivétel kezelése; sok hiba fordulhat elő a fájlokkal való munka során. Például: ha egy bezárt fájlhoz hívjuk a CloseFile fájlt, a Delphi I / O hibát jelent. Másrészt, ha megpróbálunk bezárni egy fájlt, de még nem hívtuk meg az AssignFile fájlt, az eredmények kiszámíthatatlanok.
Írjon egy fájlba
Tegyük fel, hogy kitöltöttünk egy sor Delphi-tagot a nevükkel, e-mailekkel és hozzászólások számával, és ezeket az információkat egy fájlban szeretnénk tárolni a lemezen. A következő kódrész fogja elvégezni a munkát:
var
F: fájl TMember;
i: egész szám;
kezdődik
AssignFile (F, 'tagság.dat');
Írja át (F);
próbáld ki
mert j: = 1 nak nek 50 csinál
Írni (F, Tagok [j]);
végül
CloseFile (F);
vég;vég;
Olvassa el egy fájlból
Az összes információ beolvasásához a 'Members.dat' fájlból a következőket használjuk kód:
var
Tag: TMember
F: fájl TMember;kezdődik
AssignFile (F, 'tagság.dat');
Reset (F);
próbáld ki
míg nem Eof (F) kezdődik
Olvassa el (F, Tag);
{DoSomethingWithMember;}
vég;
végül
CloseFile (F);
vég;vég;
Jegyzet: Az Eof az EndOfFile ellenőrző funkció. Ezt a funkciót arra használjuk, hogy megbizonyosodjunk arról, hogy nem a fájl végén (az utolsó tárolt rekordon túl) akarunk olvasni.
Keresek és helymeghatározás
A fájlok általában egymás után érhetők el. Ha egy fájlt a szokásos módon olvasnak vagy olvasnak, vagy a szokásos írási eljárással írják, akkor az aktuális fájlpozíció a következő szám szerint rendezett fájlkomponensre (a következő rekordra) kerül. A gépelt fájlok véletlenszerűen érhetők el a Seek szokásos eljárással is, amely az aktuális fájlhelyet egy meghatározott összetevőre mozgatja. Az FilePos és Fájl méret A funkciók segítségével meghatározható az aktuális fájlhely és az aktuális fájlméret.
{vissza a elejére - az első feljegyzés}
Keresés (F, 0);
{menj az ötödik rekordhoz}
Keresés (F, 5);
{Ugrás a végére - "az utolsó felvétel után"}
Keresés (F, FileSize (F));
Változás és frissítés
Most megtudta, hogyan kell írni és elolvasni a tagok teljes tömbjét, de mi van, ha csak a 10. taghoz kíván keresni és megváltoztatni az e-mailt? A következő eljárás pontosan ezt teszi:
eljárás E-mailt változtatni(const RecN: egész szám; const Új Email: húr) ;var DummyMember: TMember;kezdődik
{hozzárendelés, nyitás, kivételkezelő blokk}
Keresés (F, RecN);
Olvassa el (F, DummyMember);
DummyMember. E-mail: = NewEMail;
{Olvassa el a következő rekordot, meg kell tennünk
térjen vissza az eredeti rekordhoz, majd írjon}
Keresés (F, RecN);
Írni (F, DummyMember);
{bezárás}vég;
A feladat befejezése
Ennyi - most már van minden, amire szükség van a feladat végrehajtásához. A tagok adatait a lemezre írhatja, visszaolvashatja, és a fájl „közepén” akár az adatok (például e-mail) megváltoztatását is.
Fontos az, hogy ez a fájl nem egy ASCII fájl, így néz ki Jegyzettömb (csak egy rekord):
.Delphi Guide g Ò5 · ¿ì. 5.. B V.Lƒ, „¨[email protected]Ï.. ç.ç.ï..