0% found this document useful (0 votes)
130 views3 pages

Ini File

The document discusses .INI files, their format and use for storing application configuration data in Windows. It describes the TIniFile class in Delphi that provides methods to read from and write to INI files. Specific examples are given of using TIniFile to store and retrieve application settings like the last user, form position/size and more between sessions by reading from and writing to an INI file.

Uploaded by

Nur Rokhman
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
130 views3 pages

Ini File

The document discusses .INI files, their format and use for storing application configuration data in Windows. It describes the TIniFile class in Delphi that provides methods to read from and write to INI files. Specific examples are given of using TIniFile to store and retrieve application settings like the last user, form position/size and more between sessions by reading from and writing to an INI file.

Uploaded by

Nur Rokhman
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 3

MANIPULASI INI FILES

The .INI files have a text-based file format for representing application configuration data. Even though, Windows Microsoft recommends using Registry to store application specific configuration data, in many cases you'll find that using INI files is much faster. After all, Windows still use WIN.INI and SYSTEM.INI files. One simple use of INI files, as a status saving mechanism, would be to save the size and location of a form if you want a form to reappear at its previous position.

.INI file format


Initialization or Configuration Settings file (.INI) is a text file with 64Kb limit divided into sections, each containing zero or more keys. Each key contains zero or more values. Example:
[SectionName] keyname1=value ;comment keyname2=value

Section names are enclosed in square brackets, and must begin at the beginning of a line. Section and key names are case-insensitive, and cannot contain spacing characters. The key name is followed by an equal sign ("="), optionally surrounded by spacing characters, which are ignored. If the same section appears more than once in the same file, or if the same key appears more than once in the same section, then the last occurrence prevails. A key can contain string, integer or boolean value. Delphi IDE uses INI file format in many cases. For example, the .DSK files (desktop settings) have the INI file format.

TIniFile
Delphi provides the TIniFile class, declared in the inifiles.pas unit, with methods to store and retrieve values from INI files. Prior to working with the TIniFile methods you need to create an instance of the class:
uses inifiles; ... var IniFile : TIniFile; begin IniFile := TIniFile.Create('myapp.ini') ;

The above code creates an IniFile object and assigns 'myapp.ini' to the only property of the class - the FileName property - used to specify the name of the INI file you are to use. The code as written above looks (stores) for the myapp.ini file in the \Windows directory. A better way to store application data is in the application's folder - just specify the full path name of the file for the Create method:

MANIPULASI INI FILES


// place the INI in the application folder, // let it have the application name // and 'ini' for extension: iniFile := TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) ;

Read from INI


The TIniFile class has several "read" methods. The ReadString reads a string value from a key, ReadInteger, ReadFloat and similiar are used to read a number from a key. All "read" methods have a default value that can be used if the entry does not exist. For example the ReadString is declared as: function ReadString(const Section, Ident, Default: String): String; override;

Write to INI
The TIniFile has a corresponding "write" method for each "read" method. In other words they are WriteString, WriteBool, WriteInteger, etc. For example, if we want a program to remember the name of the last person who used it, when it was, and what were the main form coordinates, we might establish a section called "Users" and a keyword called "Last" and "Date" to track the information; and another section called "Placement" with keys "Top", "Left", "Width", "Height".
project1.ini [User] Last=Zarko Gajic Date=01/29/2009 [Placement] Top=20 Left=35 Width=500 Height=340

Note that the key named "Last" holds a string value, "Date" holds a TDateTime value, all keys in the "Placement" section hold an integer value. The OnCreate event of the main form is the perfect place to store the code needed to access the values in the application's initialization file:
procedure TMainForm.FormCreate(Sender: TObject) ; var appINI : TIniFile; LastUser : string; LastDate : TDateTime; begin

MANIPULASI INI FILES


appINI := TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) ; try //if no last user return an empty string LastUser := appINI.ReadString('User','Last','') ; //if no last date return todays date LastDate := appINI.ReadDate('User', 'Date', Date) ; //show the message ShowMessage('This program was previously used by ' + LastUser + ' on ' + DateToStr(LastDate)); Top := appINI.ReadInteger('Placement','Top', Top) ; Left := appINI.ReadInteger('Placement','Left', Left); Width := appINI.ReadInteger('Placement','Width', Width); Height := appINI.ReadInteger('Placement','Height', Height); finally appINI.Free; end; end;

Main form's OnClose event is ideal for the "Save INI" part of the project.
procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction) ; var appINI : TIniFile; begin appINI := TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')) ; try appINI.WriteString('User','Last','Zarko Gajic') ; appINI.WriteDate('User', 'Date', Date) ; with appINI, MainForm do begin WriteInteger('Placement','Top', Top) ; WriteInteger('Placement','Left', Left) ; WriteInteger('Placement','Width', Width) ; WriteInteger('Placement','Height', Height) ; end; finally appIni.Free; end; end;

INI Sections
The EraseSection erases an entire section of an INI file. The ReadSection and ReadSections fills a TStringList object with the names of all sections (and key names) in the INI file.

INI Limitations and Downsides


The TIniFile class uses the Windows API which imposes a limit of 64KB on INI files. If you need to store more than 64KB of data, you should use the TMemIniFile. Another problem might rise if you have a section with more than 8K value. One way to solve the problem is to write your own version of the ReadSection method.

You might also like