A típusos fájlok olyan adathalmazok, amelyek azonos típusú adatelemekből épülnek fel. Az adatelemek típusa tetszőleges lehet. Az adatelemek azonos mérete lehetővé teszi, hogy az adatokat szekvenciálisan és közvetett módon egyaránt elérjük. A fájlban tárolt adatelemek a felírás sorrendjében 0-tól kezdve egyesével számozódnak. A fájl feldolgozásánál a sorszám felhasználásával az állomány tetszőleges elemére pozícionálhatunk. A fájl méretét a benne található adatelemek száma adja.

 

A típus nélküli fájlok

 

A számítógépen tárolt állományok többsége nem tagolható szövegsorokra, és a bennük tárolt adatelemek mérete sem azonos. Az ilyen állományokat típus nélküli fájlként kezelhetjük. Ez nagy segítséget jelent ismeretlen vagy nem szabályos szerkezetű fájlok feldolgozásakor. Mivel az adatforgalom a fájl és a program között ellenőrzés nélkül megy végbe, gyors fájlkezelés valósítható meg. (var valtozonev: file)

 

A fájlkezelés lépései

 

Az állományok tartalmának eléréséhez az oprendszertől és a programnyelvtől függetlenül mindig ugyanazokat a főbb lépéseket kell végrehajtani: előkészületek, megnyitás, feldolgozás fájlműveletekkel, az állomány lezárása.

 

a) Előkészületek

A lemezen tárolt állományokat a fájlváltozóval azonosítjuk.

 

Deklarálása: var változónév : file of tipus;

 

A megfelelő típusú fájlváltozó létrehozása után, az AssignFile eljárás segítségével össze kell rendelni a fájlváltozót egy létező vagy új állomány nevével.

 

AssignFile(fájlváltozó, fájlnév elérési útja )

 

Ha az elérési utat nem adjuk meg, akkor a hivatkozás relatív lesz, tehát ott keresi majd a fájlt, ahol a program elhelyezkedik. („hordozható lesz” a program)

 


b) A fájlnyitás

A reset eljárás segítségével csak létező állomány nyitható meg. A nyitás után az EOF függvény true értéke jelzi, ha a fájl üres. A Reset az aktuális fájlpozíciót a fájl elejére állítja (a művelet már megnyitott állományon is elvégezhető).

A rewrite eljárás új állományt hoz létre, vagy a már meglévő fájlt újraírja, így annak teljes tartalma elvész. Az állomány elejére állítja az aktuális fájlpozíciót.

A fájlnyitó eljárások nem határozzák meg az adatok áramlásának irányát. A fájlnyitás előtt a System modul FileMode változójának történő értékadással beállíthatjuk, hogy a Reset eljárással megnyitott típusos –és típus nélküli fájlokhoz milyen műveletekkel lehet hozzáférni:

0 (csak olvasható), 1 (csak írható), 2 (írható és olvasható).

 

c) Típusos fájlok I/O műveletei

A megnyitott típusos fájlban az aktuális fájlpozíció a fájl elején helyezkedik el, és az első, 0. sorszámú adatelemre mutat. Minden írási vagy olvasási művelet után a fájlpozíció a következő adatelemre mutat. A fájlba írásra a Write a fájlból olvasásra a Read(fájlváltozó, változólista) szolgál.

A fájl utolsó elemét követően az Eof(fájlváltozó) true értéke jelzi az állomány végének elérését. A Seek(fájlváltozó, index) eljárás az aktuális fájlpozíciót a longint típusú index paraméterben megadott sorszámú elemre mozgatja.

Ha a fájl vége után pozícionálunk (az index nagyobb, mint a fájl adatelemeinek száma), akkor az Eof függvény true értéket ad vissza. Ilyen pozíció esetén az olvasás művelete „Read beyond end of file” hibát eredményez.

A FileSize(fájlváltozó) függvény integer típusú visszatérési értékben adja meg a fájlban tárolt adatelemek számát. Ha a fájl üres, az érték 0.

A FilePos(fájlváltozó) függvény a longint típusú aktuális fájlpozíció értékével tér vissza. Az aktuális fájlpozíció kijelöli azt az adatelemet, amelyet a következő művelettel elérünk.

Az állomány végének elérésekor a FileSize és a FilePos ugyanazt az értéket adja.

A Truncate(fájlváltozó) eljárás az aktuális fájlpozíciótól kezdve csonkolja az állományt.

 

d) A fájl lezárása

A CloseFile eljárás frissíti az állományt, így az utoljára végrehajtott műveletek eredménye is megjelenik az állományban.

Az állomány lezárása után is megmarad a kapcsolat a fájlnév és a fájlváltozó között, így ha a programban újra meg kell nyitni egy már lezárt állományt, akkor nincs szükség újabb AssignFile hívására.

A Delphi programból kilépve minden nyitott állományt automatikusan, a fájltartalom frissítése nélkül zár le a rendszer. Ez az írásra megnyitott fájlok esetén adatvesztéssel járhat.

 

Előnyei: könnyű és gyors adatkezelés, kis fájlméret a bináris tárolásnak köszönhetően.

Hátrányai: Ismerni kell a típusát, hogy kezelni tudjuk; ember számára olvashatatlan;

 

e) Az utolsó adatelem utánra való pozícionálás hozzáíráshoz

Seek(fájlváltozó, filesize(fájlváltozó));

 

f) Az állomány teljes tartalmának törlése

Seek(fájlváltozó, 0);

Truncate(fájlváltozó);

 


g) Egy adott adatelem törlése

Módszer: az utolsó elemmel felülírjuk a törlendő elemet. Hátránya, hogy a fájl rendezetlen lesz.

Módszer: a törlendőt felülírjuk az utána következővel, azt pedig az azután következővel. A végét csonkoljuk. Így a rendezettség megmarad.

 

Seek(f, filesize(f)-1);

Read(f, rec);

Seek(f, i);

Write(f, rec);

Seek(f, filesize(f)-1);

Truncate(f);

 

h) Létező fájl listázása

Reset(f);

For i:=1 to filesize(f) do begin

read(f, rec);

memo1.lines.add(rec);

                                                  end;

 

A bejegyzés trackback címe:

https://delphi-learning.blog.hu/api/trackback/id/tr181601225

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása