 
		
		43
		
			 
		
	 		
	Tags:   
	
			delphi
			
	
		
	
	
	
	
	
		 
		
			Skrevet af 
Bruger #1425
			 @ 26.10.2002 
		 	
	En indføring til INI filer – Part I
	Indledning:
Denne artikel består af to dele. Den første vil forklare hvordan man kan bruge INI filers mest almindelige egenskaber. Det vil sige, hvordan man kan læse og skrive strenge, tal, og boolean værdier.
Part II vil beskæftige sig med hvordan man lister indhold af en fil, lidt fejlhåndtering, hvordan man kan slette data og til sidst lidt blandede informationer.
Hvis du aldrig har set en ini fil før, er et eksempel her
[Sektion]
Nøgle=værdi
EnNøgleMere=en værdi
Her ser vi den simple opbygning med et sektionsnavn, hvorunder der er forskellige nøgler med en tilhørende værdi.
Det første skridt:
Før vi kan tilgå en INI fil, skal vi have lavet et såkaldt TINIFile objekt. Dette objekt ligger i 
INIFiles.pas, og vi skal derfor tilføje 
INIfiles til vores Uses section. Hvis du har startet et nyt projekt skulle din Uses sektion (Delphi6) se således ud:
Uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, INIFiles;
Før vi kan arbejde med en INI fil skal TINIFile objektet skabes.
Var
  MyINI: TINIFile; // TINIFile objektet
  PathToINIFile: String;
Begin
    PathToINIFile := IncludeTrailingBackslash(ExtractFilePath(ParamStr(0)))+'test.ini';
  {Skab objektet}
  MyINI := TINIFile.Create(PathToINIFile);
  
  {Lav arbejde med objektet}
  //Det kommer vi til.. :)
  
  {Frigør hukommelse}
  MyINI.Free;
End;
Her så vi hvordan vi erklærede en variabel af typen TINIFile, og skabte objektet. Den ene parameter der blev send med i Create kaldet er stien til den INI fil vi skal arbejde med. I vores tilfælde, ligger den i samme sti som programmet og hedder 
test.ini
Hvis vi ikke havde angivet en sti, men kun 
test.ini ville programmet have ledt efter filen i Windows mappen.
Fremover i artiklen vil jeg hverken skabe eller frigøre TINIFile objektet, da det foregår som beskrevet ovenfor. 
At læse og skrive:
Nu er vi klar til at arbejde med INI filer, vi starter med at skrive til filen så vi har lidt mere at arbejde med.
At skrive til en INI fil
  //procedure WriteString(const Section, Ident, Value: String);
  MyINI.WriteString('MinSektion', 'Tekst', 'Se, det virker!');
  
  //procedure WriteInteger(const Section, Ident: String; Value: Longint); 
  MyINI.WriteInteger('MinSektion', 'Heltal', 1337);
  
  //procedure WriteFloat(const Section, Ident: String; Value: Double); 
  MyINI.WriteFloat('EndnuEnSektion', 'pi_ca', 22/7);
  //proceduure WriteBool(const Section, Ident: String; Value: Boolean);
  MyINI.WriteBool(‘EndnuEnSektion’, ‘ErINIFilerNyttige’, True);
 
Her skrev vi fire ting til filen
  - En streng, nemlig ”Se, det virker!”
- Et heltal, 1337
- Et kommatal, tilnærmet Pi 22/7
- En boolean, True (Note: I filen gemmes True som 1 og False som 0)
Disse fire procedure kræver alle 3 parametre: Hvilken sektion der skal skrives til, hvilken nøgle og det data der skal gemmes.
Hvis vi kigger i INI filen nu, vil den se således ud:
[MinSektion]
Tekst=Se, det virker!
Heltal=1337
[EndnuEnSektion]
pi_ca=3,14285714285714
ErINIFilerNyttige=1
Som sagt repræsenteres boolean typens værdi ved et 1 (True) eller 0 (False).
Så langt så godt, men hvordan henter vi data ind?
 At læse fra en INI fil
Her har vi også forskellige funktioner til de forskellige datatyper, de bruges således:
  //function ReadString(const Section, Ident, Default: String): String;
  editText.Text := MyINI.ReadString('MinSektion', 'Tekst', 'Ikke fundet');
  //function ReadInteger(const Section, Ident: String; Default: Longint): Longint;
  editInteger.Text := IntToStr(MyINI.ReadInteger('MinSektion', 'Heltal', 0));
  //function ReadFloat (const Section, Ident: String; Default: Double): Double;
  editFloat.Text := FloatToStr(MyINI.ReadFloat('EndnuEnSektion', 'pi_ca', 3.14));
  //function ReadBool (const Section, Ident: String; Default: Boolean): Boolean;
  chkbool.Checked := MyINI.ReadBool('EndnuEnSektion', 'ErINIFilerNyttige', False);
De tager 3 parametre, de 2 er som vi kender det, sektionen og nøglen. Den sidste er den værdi der skal returneres hvis nøglen ikke blev fundet i filen (NB: For Integer, Float og Boolean betragtes en tom værdi som om at nøglen slet ikke blev fundet, dvs. Default værdien returneres.)
Afrunding
Dette var så part I af en indføring til INI filer. Der er lavet et tilhørende demo projekt som kan hentes på 
http://code.loftager.dk/udv/ini/ini_part_i.zip. Dette projekt indeholder eksemplerne fra denne artikel.
Eventuelle spørgsmål kan stilles enten via 
mail eller Udvikleren’s IRC kanal.
	Del også gerne artiklen med dine Facebook venner:  
	
	
	
	
Kommentarer (9)
		
		
			Great artikel om Ini filer 

 Har lært noget 

 mange tak!!
		
			ja flot artikel
		
	
		
		
			En god artikel, men der mangler en forklaring, til hvad INI filer bruges til
		
	
		
		
			Ja. Jeg er enig med Chadi.
Jeg vil også få lidt mere at vide hvilkt sted jeg skal skrive koderne....
for eksempel står der:
Før vi kan arbejde med en INI fil skal TINIFile objektet skabes. 
Og så er der en kode.
Hvor er det?????????????
Gider du ikke skrive tilbage for min skyld
		
	
		
		
			Hvorfår bruge en INI fil, istædet for at bruge .txt
		
	
		
		
			#3 Til opbevaring af textdata. De er smarte til config-filer. Idag er XML dog ved at overtage denne rolle.
#4 Se det første kodeeksempel i artiklen. Der står en kommentar {skab objektet} - linien efter kaldes construtroren i TINIFile klassen og vi får et instansieret objekt. Du kan også hente eksempel programmet og se det deri 

Beklager det tog så lang tid før jeg fik svaret ..
		
			Hmmm jeg kan ikke få det til at virke!
Jeg kan ikke engang få lov til at oprette ini-filen!
Kan det skyldes jeg bruger Delphi 7??
		
	
		
		
			Virkelig god artikel!
Jeg blev lidt forvirret af den anden INI Artikel her på stedet, men da jeg havde læst den her blev jeg glædeligt overrasket 

5 herfra!
// Sieker
		
			Jeg får det ikke til at virke...
Den har åbenbart ikke nogen problemer med når jeg skriver det første i OnCreate, men det med at tilføje ting til INI-Filen kommer der en fejl ved, og programmet lukker...
Den opretter åbenbart ikke INIfilen, for den ligger ikke i mappen vor jeg gemte den. . .
		
	
		
	Du skal være 
logget ind for at skrive en kommentar.