Delphi - Ini állományok tárolása a memóriában

forráskód letöltése
A Delphi-ben lehetőségünk van arra is, hogy INI állományokat kezeljünk. Nem mindig célravezető, ha a módosításoka közvetlenül a lemezen lévő, fizikai INI állományban tesszük. Lehetőségünk van arra is, hogy a lemezen lévő állományról létrehozzuk a memóriában egy másolatot. Ezt nyugodtan szerkeszthetjük, és amikor már biztosak vagyunk a módosítás helyességében, bármikor lemezre menthetjük azt.
Az INI állományok felépítése TXT formátumú. Különböző részekre lehetnek osztva, ezeket a részeket szakaszoknak nevezzük. Egy szakasz formátum a következő:
[Data]
A szakaszon belül lehetnek kulcsok, a kulcsoknak pedig lehetnek értékei. Kulcs és érték az alábbi formában szerepelhet.
a=5
s=’sztring’
Az értékek különböző típusúak lehetnek. Minden típushoz külön metódust találhatunk az érték beírására és kiolvasására. Ezekben a metódusokban közös, hogy nevük a Write*, illetve Read* karaktersorozattal kezdődik, utána a típusra vonatkozó név következik, pl.: ReadString, WriteInteger, stb.
Az INI állományok kezelésével, az INIFiles unit foglalkozik. Ha egy INI állományt be akarunk másolni a memóriába, akkor a TMemIniFile osztályt kell használnunk.
A fizikai állomány csak egyszer kerül beolvasásra, amikor meghívjuk a TMemIniFile osztály Create metódusát. Ezután az állomány tartalma a memóriában tárolódik, egy bufferben, TStringList formájában. Minden művelet a memóriában kerül végrehajtásra, a lemezen lévő állomány változatlan marad, még utasítást nem adunk az adatok lemezre mentésére.
A TMemIniFile osztály egyetlen property-vel rendelkezik, ez a következő.
FileName
Osztály: TMemIniFile
property FileName: string;
Csak olvasható. A betöltött INI állomány elérési útját és nevét adja vissza.
Metódusok
Clear
Osztály: TMemIniFile
procedure Clear;
Törli a memóriában lévő INI állomány teljes tartalmát.
Create
Osztály: TMemIniFile
constructor Create(
const FileName String
);
Az osztály konstruktora.
Paraméterek
const FileName String
Ebben a paraméterben az INI állomány elérési útját és nevét kell megadnunk. Ha a megadott állomány már létezik, akkor az betöltődik a memóriába. Ha olyan állományra hivatkozunk, amely nem létezik, akkor egy üres INI állomány jön létre a memóriában.
DeleteKey
Osztály: TMemIniFile
procedure DeleteKey(
const Section,
Ident: String
);
Töröl egy megadott kulcsot az állományból.
Paraméterek
const Section
Az állományon belüli szakaszt azonosítja.
Ident: String
A szakaszon belüli kulcs.
EraseSection
Osztály: TMemIniFile
procedure EraseSection(
const Section: String
);
Törli a megadott szakaszt, teljes tartalmával együtt. Minden benne lévő kulcs és érték törlődik.
Paraméterek
const Section: String
A szakasz neve.
GetStrings
Osztály: TMemIniFile
procedure GetStrings(
List: TStrings TStrings
);
A memóriába beolvasott INI állomány tartalmát átmásolja, egy megadott TStrings típusú objektumba. Ez az objektum lehet például egy ListBox Items property-je.
Paraméterek
List: TStrings TStrings
Az itt megadott változóba kerül a másolat.
ReadSection
Osztály: TMemIniFile
procedure ReadSection (
const Section: string;
Strings: TStrings
);
Egy megadott szakasz kulcsait beolvassa egy TStrings objektumba.
Paraméterek
const Section: string
A szakasz neve.
Strings: TStrings
Ebben a paraméterben egy változót kell megadnunk, amelybe a lekérdezés eredménye kerül.
ReadSections
Osztály: TMemIniFile
procedure ReadSections(
Strings: TStrings
);
Listát készít az INI állományban található szakaszok neveiből.
Paraméterek
Strings: TStrings
A szakaszok nevei az itt megadott állományba kerülnek.
ReadSectionValues
Osztály: TMemIniFile
procedure ReadSectionValues(
const Section: String;
Strings: TStrings
);
Kiolvassa a megadott szakaszban található összes értéket.
Paraméterek
const Section: String
A szakasz neve.
Strings: TStrings
Az itt megadott változóba kerül a lekérdezés eredménye.
ReadString
Osztály: TMemIniFile
function ReadString(
const Section,
Ident,
Default: String
): string;
Kiolvassa egy megadott szakasz, megadott, sztring típusú kulcsának értékét.
Paraméterek
const Section
A szakasz neve.
Ident
A kulcs neve.
Default: String
Ha megadott szakasz vagy kulcs nem létezik, illetve ha nincs kiolvasható érték, akkor az itt megadott értéket adja vissza.
Visszatérési érték
A kulcshoz tartózó érték, vagy a Default paraméter értéke.
Rename
Osztály: TMemIniFile
procedure Rename(
const FileName: String;
Reload: Boolean
);
A memóriában lévő INI állományt egy másik fizikai INI állományhoz rendeli hozzá.
Paraméterek
const FileName: String
Az új állomány elérési útja és neve.
Reload: Boolean
Igaz érték esetén, azonnal betölti az új állomány tartalmát a memóriába.
SectionExists
Osztály: TMemIniFile
function SectionExists(
const Section: string
): Boolean;
Megadja, hogy egy adott szakasz létezik-e az állományban.
Paraméterek
const Section: string
A keresendő szakasz neve.
Visszatérési érték
Igaz, ha a megadott szakasz létezik az állományban.
SetStrings
Osztály: TMemIniFile
procedure SetStrings(
List: TStrings TStrings
);
A memóriában lévő INI állomány tartalmát egy megadott TStrings objektumból tölti be.
Paraméterek
List: TStrings TStrings
Az itt megadott objektum tartalma kerül betöltésre.
UpdateFile
Osztály: TMemIniFile
procedure UpdateFile;
Lemezre írja a memóriában lévő tartalmat. Ha az állomány már létezik, akkor tartalma felülíródik, ha nem létezik, akkor létrejön.
WriteString
Osztály: TMemIniFile
procedure WriteString(
const Section,
Ident,
Value: String
);
Beír egy sztring típusú értéket egy megadott szakasz, megadott kulcsához. Ha létrehozásnál olyan szakaszra hivatkozunk, amely nem létezik, akkor az automatikusan létrejön.
Paraméterek
const Section
A szakasz neve.
Ident
A kulcs neve.
Value: String
A beírandó érték.