HOME  - -  Lazarus/ Delphi tutorials

Using ini files

Quick Checklist

(Page's URL: ldn150_quicklist.htm)

This is a very condensed version of a guide I put on the web to help people with using ini files with Lazarus, written June 2022, after years of doing such things. I commend it to you if you want explanations of the details of using ini files.

The page you are reading now is to help someone who "knows all about" using ini files when he or she is adding them to a app's code. A checklist of the necessary ingredients.

What order will they be in?

I'll try to present the "ingredients" in an order that could be followed in building the app.

The .ini file: Start with a reasonably clear idea of what you want to control via the ini file. Decide what your Sections and Keys are going to be. Have at least a "skeleton" .ini file available for development work.

Uses IniFiles: Remember to put "IniFiles" in the uses clause, near the top of the app.

Inifile name: Ordianrily, I'd put the name of the inifile in a global constant. You can waste a lot of time by accidentally having the app looking in two places for inifile matters. And if you decide to change the name of the inifile, establishing it once with that global constant, and using the constant any time you need the inifile's name will have saved you nuisance and uncertainty. (Did you find and change EVERY reference to the inifile's name?)

Start with using an ini file that is NOT changed by the app. In some cases you will need to do the ini file things in FormActivate. Therefor, I'd try to do all of them there. There may be times when you have to visit the ini file during FormCreate and during FormActivate.

Here is some code illustrating various bits of what will happen during the read of the ini file...

procedure Tldn150f1.FormActivate(Sender: TObject);
var dfIniFile:TIniFile;//"df" in name from "datafile". Could be anything.
begin
  //Heart of reading from ini file
  dfIniFile:=TIniFile.Create(skIniFileName);

  with dfIniFile do begin
     eFirstTerm.text:=readstring('Terms','FirstTerm','999');
     eSecondTerm.text:=readstring('Terms','SecondTerm','998');
     with ldn150f1 do begin
       left:=readinteger('AppWindow','left',30);
       top:=readinteger('AppWindow','top',10);
       width:=readinteger('AppWindow','width',350);
       height:=readinteger('AppWindow','height',120);
       end;//with ldn150f1
     end;//with dfInifile...

  dfIniFile.Free;

  //End of "Heart of...."

  //There may be other code here, or before the ini file code.

end;//FromActivate

=========================
When that much is in place, you're nearly done.

Remember that if you exit with application.terminate, or by using the red square "stop app" while running the code under the IDE, you will bypass what the following provides for.

(Use "close" to shut the app down by, say, clicking a "Quit" button.)

Here is some code illustrating various bits of what might happen during writing updates back to the ini file. The code goes in the FormClose handler. i would be inclined to "wrap" the code for saving the app's state to the ini file in its own procedure, called "SaveState" in the example below. SaveState would be called from the FormClose handler.

procedure Tldn150f1.SaveState;
var dfIniFile:TIniFile;//"df" in name from "datafile". Could be anything.
begin
   //Heart of writing to ini file
  dfIniFile:=TIniFile.Create(skIniFileName);

  with dfIniFile do begin
     writestring('Terms','FirstTerm',eFirstTerm.text);
     writestring('Terms','SecondTerm',eSecondTerm.text);
     with ldn150f1 do begin
       writeinteger('AppWindow','left',left);
       writeinteger('AppWindow','top',top);
       writeinteger('AppWindow','width',width);
       writeinteger('AppWindow','height',height);
       end;//with ldn150f1
     end;//with dfInifile

  dfIniFile.Free;

  //End of "Heart of...."

end; //SaveState

And that's it!...

And that's it for this "quick list"/ "summary" version of my guide to using ini files with Lazarus.

A few words from the sponsors...

Please get in touch if you discover flaws in this page. Please mention the page's URL. (wywtk.com/lut/ldn150inifiles/ldn150_quicklist.htm).

If you found this of interest, please mention in forums, give it a Facebook "like", Google "Plus", or whatever. If you want more of this stuff, help!? There's not much point in me writing these things, if no one feels they are of any use.



index sitemap
What's New at the Site Advanced search
Search tool (free) provided by FreeFind... whom I've used since 2002. Happy with it, obviously!

Unlike the clever Google search engine, this one merely looks for the words you type, so....
*    Spell them properly.
*    Don't bother with "How do I get rich?" That will merely return pages with "how", "do", "I"....

Please also note that I have three other sites, and that this search will not include them. They have their own search buttons.

My SheepdogSoftware.co.uk site, where you'll find my main homepage. It has links for other areas, such as education, programming, investing.

My SheepdogGuides.com site.

My site at Arunet.




How to email or write this page's editor, Tom Boyd. Please cite page's URL, ldn150_quicklist.htm, if you write.


Test for valid HTML

Page has been tested for compliance with INDUSTRY (not MS-only) standards, using the free, publicly accessible validator at validator.w3.org. It passes in some important ways, but still needs work to fully meet HTML 5 expectations. (If your browser hides your history, you may have to put the page's URL into the validator by hand. Check what page the validator looked at before becoming alarmed by a "not found" or "wrong doctype".)

AND passes... Test for valid CSS


Why does this page cause a script to run? Because of the Google panels, and the code for the search button. Also, I have my web-traffic monitored for me by eXTReMe tracker. They offer a free tracker. If you want to try one, check out their site. Why do I mention the script? Be sure you know all you need to about spyware.

....... P a g e . . . E n d s .....