unit SimplyINI;
{$MODE Delphi}
{$codepage UTF8}
interface
uses SysUtils, Classes, IniFiles;
//stdcalls
function INIReadString (const ASection, AKey, ADefault, AFileName: string): string; stdcall;
function INIReadInteger (const ASection, AKey: string; const ADefault: Int64;  const AFileName: string): Int64; stdcall;
function INIReadBoolean (const ASection, AKey: string; const ADefault: boolean; const AFileName: string): boolean; stdcall;
procedure INIWriteString (const ASection, AKey, AValue, AFileName: string); stdcall;
procedure INIWriteInteger (const ASection, AKey: string; const AValue: Int64; const AFileName: string); stdcall;
procedure INIWriteBoolean (const ASection, AKey: string; const AValue: boolean; const AFileName: string); stdcall;
procedure INIDeleteKey (const ASection, AKey, AFileName: string); stdcall;
procedure INIDeleteSection (const ASection, AFileName: string); stdcall;
function INISectionExists (const ASection, AFileName: string): boolean; stdcall;
procedure INIReadSections (const AFileName: string; VStrings: TStrings); stdcall;
procedure INIReadSection (const ASection, AFileName: string; VStrings: TStrings); stdcall;
implementation
//Read functions
function INIReadString (const ASection, AKey, ADefault, AFileName: string): string;
var INI: TIniFile;
begin
INI:= TIniFile.Create(AFileName);
try
 Result:= INI.ReadString(ASection, AKey, ADefault);
 finally
 INI.Free;
 end;
end;
function INIReadInteger (const ASection, AKey: string; const ADefault: Int64;  const AFileName: string): Int64;
var INI: TIniFile;
begin
INI:= TIniFile.Create(AFileName);
try
 Result:= INI.ReadInteger(ASection, AKey, ADefault);
 finally
 INI.Free;
 end;
end;
function INIReadBoolean (const ASection, AKey: string; const ADefault: boolean; const AFileName: string): boolean;
var INI: TIniFile;
begin
INI:= TIniFile.Create(AFileName);
try
 Result:= INI.ReadBool(ASection, AKey, ADefault);
 finally
 INI.Free;
 end;
end;
//Write procedures
procedure INIWriteString (const ASection, AKey, AValue, AFileName: string);
var INI: TIniFile;
begin
INI:= TIniFile.Create(AFileName);
try
 INI.WriteString(ASection, AKey, AValue);
 finally
 INI.Free;
 end;
end;
procedure INIWriteInteger (const ASection, AKey: string; const AValue: Int64; const AFileName: string);
var INI: TIniFile;
begin
INI:= TIniFile.Create(AFileName);
try
 INI.WriteInt64(ASection, AKey, AValue);
 finally
 INI.Free;
 end;
end;
procedure INIWriteBoolean (const ASection, AKey: string; const AValue: boolean; const AFileName: string);
var INI: TIniFile;
begin
INI:= TIniFile.Create(AFileName);
try
 INI.WriteBool(ASection, AKey, AValue);
 finally
 INI.Free;
 end;
end;
//Delete function
procedure INIDeleteKey (const ASection, AKey, AFileName: string);
var INI: TIniFile;
begin
INI:= TIniFile.Create(AFileName);
try
 INI.DeleteKey(ASection, AKey);
 finally
 INI.Free;
 end;
end;
procedure INIDeleteSection (const ASection, AFileName: string);
var INI: TIniFile;
begin
INI:= TIniFile.Create(AFileName);
try
 INI.EraseSection(ASection);
 finally
 INI.Free;
 end;
end;
function INISectionExists (const ASection, AFileName: string): boolean;
var INI: TIniFile;
begin
INI:= TIniFile.Create(AFileName);
try
 Result:= INI.SectionExists(ASection);
 finally
 INI.Free;
 end;
end;
procedure INIReadSections (const AFileName: string; VStrings: TStrings);
var INI: TIniFile;
begin
INI:= TIniFile.Create(AFileName);
try
 INI.ReadSections(VStrings);
 finally
 INI.Free;
 end;
end;
procedure INIReadSection (const ASection, AFileName: string; VStrings: TStrings);
var INI: TIniFile;
begin
INI:= TIniFile.Create(AFileName);
try
 INI.ReadSection(ASection, VStrings);
 finally
 INI.Free;
 end;
end;
end.
