Kuinka manipuloida INI-tiedostoja Delphistä

click fraud protection

INI-tiedostot ovat tekstipohjaisia ​​tiedostoja, joita käytetään sovelluksen määritystietojen tallentamiseen.

Vaikkakin Windows suosittelee Windows-rekisterin käyttöä sovelluskohtaisten määritystietojen tallentamiseen. Useissa tapauksissa saatat huomata, että INI-tiedostot tarjoavat nopeamman tavan ohjelmalle käyttää asetuksia. Itse Windows käyttää jopa INI-tiedostoja; Desktop.ini ja boot.ini on vain kaksi esimerkkiä.

Yksi yksinkertainen INI-tiedostojen käyttö tilan tallennusmekanismina olisi lomakkeen koon ja sijainnin tallentaminen, jos haluat, että lomake ilmestyy uudelleen aiempaan sijaintiinsa. Sen sijaan, että etsitään kokonaisuutta tietokanta koon tai sijainnin löytämiseksi käytetään sen sijaan INI-tiedostoa.

INI-tiedostomuoto

Alustus- tai kokoonpanotiedosto (.INI) on tekstitiedosto, jonka raja on 64 kt, jaettuna osiin, joista kukin sisältää nolla tai enemmän avaimia. Jokainen näppäin sisältää nolla tai enemmän arvoja.

Tässä on esimerkki:

 [SectionName]
keyname1 = arvo
;kommentti
keyname2 = arvo

instagram viewer

Osien nimet on suljettu hakasulkeissa ja niiden on alkava rivin alusta. Osien ja avainten nimissä ei ole kirjainkoolla merkitystä (kirjaimella ei ole väliä), eivätkä ne saa sisältää välilyöntejä. avaimen nimi seuraa yhtäläisyysmerkki ("="), jota mahdollisesti ympäröivät välimerkit, jotka jätetään huomioimatta.

Jos sama osio esiintyy useammin kuin kerran samassa tiedostossa tai jos sama avain esiintyy useammin kuin kerran samassa osiossa, viimeinen esiintyminen on etusijalla.

Avain voi sisältää jono, kokonaisluku tai booleanarvo.​

Delfoi IDE käyttää INI-tiedostomuotoa monissa tapauksissa. Esimerkiksi, .DSK-tiedostot (työpöydän asetukset) käyttävät INI-muotoa.

TIniFile-luokka

Delphi tarjoaa TIniFile luokka, ilmoitettu inifiles.pas yksikkö, jossa menetelmät arvojen tallentamiseksi ja hakemiseksi INI-tiedostoista.

Ennen kuin työskentelet TIniFile-menetelmien kanssa, sinun on luotava luokan ilmentymä:

käyttötarkoitukset inifiles;
...
var
IniFile: TIniFile;
alkaa
IniFile: = TIniFile. Luo ( 'myapp.ini');

Yllä oleva koodi luo IniFile-objektin ja antaa 'myapp.ini' luokan ainoalle ominaisuudelle - FileName -ominaisuus —Kä käytetään määrittämään käytettävän INI-tiedoston nimi.

Yllä kirjoitettu koodi etsii koodia myapp.ini tiedosto \ Windows hakemistoon. Parempi tapa tallentaa sovellustietoja on sovelluksen kansiossa - määritä vain tiedoston koko polku Luoda menetelmä:

// aseta INI sovelluskansioon,
// anna sen olla sovelluksen nimi
// ja 'ini' laajennukselle:

iniFile: = TIniFile. Luo (ChangeFileExt (sovellus. ExeName, '. Ini'));

Lukeminen INI: ltä

TIniFile-luokassa on useita "luku" -menetelmiä. ReadString lukee a merkkijonoarvo avaimesta, ReadInteger. ReadFloat-sovellusta ja vastaavia käytetään lukemaan numero avaimesta. Kaikilla "luku" -menetelmillä on oletusarvo, jota voidaan käyttää, jos merkintää ei ole.

Esimerkiksi ReadString julistetaan:

toimia ReadString (const Osa, tunnus, oletus: merkkijono): merkkijono; ohittaa;

Kirjoita INI: lle

TIniFilessä on vastaava "kirjoitus" -menetelmä jokaiselle "luku" -menetelmälle. Ne ovat WriteString, WriteBool, WriteInteger jne.

Esimerkiksi, jos haluamme ohjelman muistavan viimeisen käyttäjän, joka käytti sitä, milloin se oli ja mitkä olivat muodon pääkoordinaatit, voimme perustaa osion nimeltä käyttäjät, avainsana nimeltään Kestää, Päivämäärä tietojen seuraamiseksi ja osio nimeltään sijoitus näppäimillä ylin, Vasen, Leveysja Korkeus.

project1.ini
[Käyttäjä]
Viimeinen = Zarko Gajic
Date = 01/29/2009
[Sijoittelun]
Top = 20
Vasemmalle = 35
Width = 500
Height = 340

Huomaa, että avain nimeltä Kestää pitää merkkijonoarvoa, Päivämäärä pitää TDateTime-arvoa ja kaikkia näppäimiä sijoitus osiossa on kokonaisluku.

Päämuodon OnCreate-tapahtuma on täydellinen paikka tallentaa koodi, jota tarvitaan sovelluksen alustustiedoston arvojen käyttämiseen:

menettely TMainForm. FormCreate (Lähettäjä: TObject);
var
appINI: TIniFile;
Viimeinen käyttäjä: merkkijono;
Viimeinen päivämäärä: TDateTime;
alkaa
appINI: = TIniFile. Luo (ChangeFileExt (sovellus. ExeName, '. Ini'));
yrittää
// jos kukaan viimeinen käyttäjä ei palauta tyhjää merkkijonoa
Viimeinen käyttäjä: = appINI.ReadString ('Käyttäjä', 'Viimeinen', '');
// jos viimeistä päivämäärää ei palaa nykypäivään
LastDate: = appINI.ReadDate ('User', 'Date', Date);
// näytä viesti
ShowMessage ('Tätä ohjelmaa käytti aikaisemmin' + LastUser + '' + 'DateToStr (LastDate));
Yläosa: = appINI.ReadInteger ('Sijoittelu', 'Ylä', Ylä);
Vasen: = appINI.ReadInteger ('Sijoittelu', 'Vasen', Vasen);
Leveys: = appINI.ReadInteger ('Sijoittelu', 'Leveys', Leveys);
Korkeus: = appINI.ReadInteger ('Sijoittelu', 'Korkeus', Korkeus);
vihdoin
appINI.Free;
pää;
pää;

Päämuodon OnClose -tapahtuma on ihanteellinen Tallenna INI osa projektia.

menettely TMainForm. FormClose (Lähettäjä: TObject; var Toimi: TCloseAction);
var
appINI: TIniFile;
alkaa
appINI: = TIniFile. Luo (ChangeFileExt (sovellus. ExeName, '. Ini'));
yrittää
appINI.WriteString ('Käyttäjä', 'Viimeinen', 'Zarko Gajic');
appINI.WriteDate ('Käyttäjä', 'Päiväys', Päivämäärä);
kanssa appINI, MainForm tehdä
alkaa
WriteInteger ('Sijoittelu', 'Ylä', Ylä);
WriteInteger ('Sijoittelu', 'Vasen', Vasen);
WriteInteger ('Sijoittelu', 'Leveys', Leveys);
WriteInteger ('Sijoittelu', 'Korkeus', Korkeus);
pää;
vihdoin
appIni. Vapaa;
pää;
pää;

INI-osiot

EraseSection poistaa kokonaisen osan INI-tiedostosta. ReadSection ja ReadSections täytä TStringList-objekti INI-tiedoston kaikkien osien nimillä (ja avainten nimillä).

INI-rajoitukset ja -puolet

TIniFile-luokka käyttää Windows-sovellusliittymä joka asettaa INI-tiedostoille 64 KB: n rajan. Jos sinun on tallennettava yli 64 kt tietoja, sinun tulee käyttää TMemIniFile-tiedostoa.

Toinen ongelma saattaa ilmetä, jos sinulla on osio, jonka arvo on yli 8 K. Yksi tapa ratkaista ongelma on kirjoittaa oma versio ReadSection-menetelmästä.

instagram story viewer