INI filer i Delphi

Tags:    delphi
Skrevet af Bruger #1330 @ 13.10.2002
Inifiler Part 1 (read/write strings)


Indledning

Inifiler er guld værd som programmør.
Hvis man skal gemme nogle indstillinger som er nemme at finde igen uden at
skulle sæge alt igennem pga det er inddelt i sektioner, plus man kan kopiere
indstillingerne fra computer til computer uden at lege med Windows
Registrerings Databasen.
Dette er nok hived grundede til at næsten alle programmøre bruge inifiler.
Denne guide/artikel vil prøve at hjælpe dig igang med at bruge inifiler til at
læse/skrive strings til/fra inifiler.

Inifilers Opbygning

En inifil er opbygget på en lidt anden made end en nprmal text file.
En inifil er inddelt i sektioner så det er nemmere at finde rundt.
Eksempel på inifil:
[Show]
toolbar1=true

[MRU]
1=C:\\dokumenter\\website\\index.php
2=C:\\dokumenter\\website\\about.php

Start

For at bruge INI Filer i Delphi skal du bruge et komponent der hedder Tinifiles.
Komponenter er ikke lige at finde i toolbaren med alle komponenterne så for
at bruge det i ens program skal man tilføje linien ”inifiles” i sin ”uses” list.
(listen over alle brugte dcu filer).
For at få Delphi til at åbne en inifile skriver man
Var
Inifil: tinifile;
Begin
Inifil:= tinifile.create(stien til filen) 
(hvis i filen ligger i samme mappe som programmet kan man bare skrive filens navn. )
(ex: ’settings.ini’) 

Læse string fra en inifilen

Filen er nu åbnet af Delphi.
Men vi skal jo også have nogle data ud af filen.
Dette gøres ved at bruge:
Readstring, readsection, readbool eller readsections.
Readstring er bygget op ved at man skriver
Inifil.readstring(sektion, text, default værdi)

Det første man skriver er den sektion hvor det står (opbygning af inifiler)
Det næste er den tekst som = den string man gerne vil ha
(ex: text=Inifiler Styrer)
Det sidste er den string Delphi skal bruge hvis der ikke står noget efter =.
(ex: Text=)
Textbox1.text:= inifil.readstring(section, string, defaulttext)
Eksempel på at bruge det.
Textbox1.text:= inifil.readstring(’text’. ‘textbox’, ‘Fejl under læsning af string’)
I dette eksempel sæter vi Textbox1.text til at være det der står efter ”text=” i inifilen.
Og hvis der ikke står noget bliver textbox1.text ’Fejl under læsning af string’.
Så hvis inifilen ser sådan her ud:
[Text]
Textbox=Inifiler Styrer!
Vil der i Textbox1.text stå Inifiler Styrer! Hvis inifilen derimod ser sådan her ud
[Text]
Textbox=
Så vil der står Fejl under læsning af string.

Skrive strings til inifilen

For at gemme i en inifil bruger man
Inifil.writestring
Dette er bygget op ved at man skriver
Inifil.writestring(sektion, text, værdi)
Det første man skriver er den sektion hvor det står (opbygning af inifiler)
Det næste er den tekst som = den string man gerne vil ha (ex: text=Inifiler Styrer)
Det sidste er så værdien. (ex: Inifiler Styrer)
Nu prøver vi så at skrive teksten fra Textbox1.text til inifilen.
Inifil.writestring(’Text’, ’Textbox’, textbox1.text);
Hvis textbox1.text = Inifiler er seje kommer inifilen til at se sådan her ud
[Text]
Textbox=Inifiler er seje

Eksempler på brug af inifiler

Eksempel på brug af inifiler. (læse)
Var 
Inifil: tinifile;
Begin læsini
Inifil:= inifil.create(’settings.ini’)
Try
Textbox1.text:= inifil.readstring(‘text’, ‘textbox’, ‘Fejl under læsning af fil’);
Finally
Inifil.free;
Eksempel på brug af inifiler. (Skrive)
Var 
Inifil: tinifile;
Begin skrivini
Inifil:= inifil.create(’settings.ini’)
Try
Inifil.writestring(‘Text’, ‘Textbox’, textbox1.text)
Finally
Inifil.free;



Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.

Del også gerne artiklen med dine Facebook venner:  

Kommentarer (6)

User
Bruger #4081 @ 30.07.03 12:22
hej
User
Bruger #3530 @ 03.09.03 22:54
Øhm...ja Ken jeg kender dig kun som en glimrende supporter indenfor Delphi :D men jeg må nok sige at det her ikke er så nemt at gå til...jeg selv var nødt til at først at læse Thomas artikel både part I og II før jeg kunne 100% fange din :D men den er rar til at lære at lave en lidt mere alternativ INI kode :)
User
Bruger #3275 @ 21.06.04 09:53
Ja den er god hvis man bare skal gemme en lille mængde data. Jeg synes man godt kan komme til at rode rundt i koden i den anden ini-fils artikel!
User
Bruger #3275 @ 21.06.04 13:12
Lige en hurtig rettelse:
I de 2 eksempler skal der står "Inifil:= TInifile.Create('settings.ini');" istedet for "Inifil:= Inifil.Create('settings.ini');"
User
Bruger #8985 @ 15.09.06 11:07
Jeg bruger altid registreringsdatabasen, fordi det er mere "usynligt", men jeg er også noob ;)
User
Bruger #10266 @ 29.11.06 15:34
Man kan bare sætte inifilen til 'Skjult' i programmets OnCreate, kan dog ikke helt huske hvordan :)
Du skal være logget ind for at skrive en kommentar.
t