201 lines
6.9 KiB
ObjectPascal
201 lines
6.9 KiB
ObjectPascal
{**************************************************************************************************}
|
|
{ }
|
|
{ Project JEDI Code Library (JCL) }
|
|
{ }
|
|
{ The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); }
|
|
{ you may not use this file except in compliance with the License. You may obtain a copy of the }
|
|
{ License at http://www.mozilla.org/MPL/ }
|
|
{ }
|
|
{ Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF }
|
|
{ ANY KIND, either express or implied. See the License for the specific language governing rights }
|
|
{ and limitations under the License. }
|
|
{ }
|
|
{ The Original Code is JclIniFiles.pas. }
|
|
{ }
|
|
{ The Initial Developer of the Original Code is John C Molyneux. }
|
|
{ Portions created by John C Molyneux are Copyright (C) John C Molyneux. }
|
|
{ }
|
|
{ Contributors: }
|
|
{ Eric S. Fisher }
|
|
{ John C Molyneux }
|
|
{ Petr Vones (pvones) }
|
|
{ Robert Marquardt (marquardt) }
|
|
{ Robert Rossmair (rrossmair) }
|
|
{ }
|
|
{**************************************************************************************************}
|
|
|
|
// Last modified: $Date: 2005/05/05 20:08:43 $
|
|
// For history see end of file
|
|
|
|
unit JclIniFiles;
|
|
|
|
{$I jcl.inc}
|
|
|
|
interface
|
|
|
|
uses
|
|
SysUtils, Classes, IniFiles;
|
|
|
|
// Initialization (ini) Files
|
|
function IniReadBool(const FileName, Section, Line: string): Boolean; // John C Molyneux
|
|
function IniReadInteger(const FileName, Section, Line: string): Integer; // John C Molyneux
|
|
function IniReadString(const FileName, Section, Line: string): string; // John C Molyneux
|
|
procedure IniWriteBool(const FileName, Section, Line: string; Value: Boolean); // John C Molyneux
|
|
procedure IniWriteInteger(const FileName, Section, Line: string; Value: Integer); // John C Molyneux
|
|
procedure IniWriteString(const FileName, Section, Line, Value: string); // John C Molyneux
|
|
|
|
// Initialization (ini) Files helper routines
|
|
procedure IniReadStrings(IniFile: TCustomIniFile; const Section: string; Strings: TStrings);
|
|
procedure IniWriteStrings(IniFile: TCustomIniFile; const Section: string; Strings: TStrings);
|
|
|
|
implementation
|
|
|
|
{$IFDEF CLR}
|
|
type
|
|
TIniFile = TMemIniFile;
|
|
{$ENDIF CLR}
|
|
|
|
// Initialization Files
|
|
function IniReadBool(const FileName, Section, Line: string): Boolean;
|
|
var
|
|
Ini: TIniFile;
|
|
begin
|
|
Ini := TIniFile.Create(FileName);
|
|
try
|
|
Result := Ini.ReadBool(Section, Line, False);
|
|
finally
|
|
Ini.Free;
|
|
end;
|
|
end;
|
|
|
|
function IniReadInteger(const FileName, Section, Line: string): Integer;
|
|
var
|
|
Ini: TIniFile;
|
|
begin
|
|
Ini := TIniFile.Create(FileName);
|
|
try
|
|
Result := Ini.ReadInteger(Section, Line, 0);
|
|
finally
|
|
Ini.Free;
|
|
end;
|
|
end;
|
|
|
|
function IniReadString(const FileName, Section, Line: string): string;
|
|
var
|
|
Ini: TIniFile;
|
|
begin
|
|
Ini := TIniFile.Create(FileName);
|
|
try
|
|
Result := Ini.ReadString(Section, Line, '');
|
|
finally
|
|
Ini.Free;
|
|
end;
|
|
end;
|
|
|
|
procedure IniWriteBool(const FileName, Section, Line: string; Value: Boolean);
|
|
var
|
|
Ini: TIniFile;
|
|
begin
|
|
Ini := TIniFile.Create(FileName);
|
|
try
|
|
Ini.WriteBool(Section, Line, Value);
|
|
{$IFDEF CLR}
|
|
Ini.UpdateFile;
|
|
{$ENDIF CLR}
|
|
finally
|
|
Ini.Free;
|
|
end;
|
|
end;
|
|
|
|
procedure IniWriteInteger(const FileName, Section, Line: string; Value: Integer);
|
|
var
|
|
Ini: TIniFile;
|
|
begin
|
|
Ini := TIniFile.Create(FileName);
|
|
try
|
|
Ini.WriteInteger(Section, Line, Value);
|
|
{$IFDEF CLR}
|
|
Ini.UpdateFile;
|
|
{$ENDIF CLR}
|
|
finally
|
|
Ini.Free;
|
|
end;
|
|
end;
|
|
|
|
procedure IniWriteString(const FileName, Section, Line, Value: string);
|
|
var
|
|
Ini: TIniFile;
|
|
begin
|
|
Ini := TIniFile.Create(FileName);
|
|
try
|
|
Ini.WriteString(Section, Line, Value);
|
|
{$IFDEF CLR}
|
|
Ini.UpdateFile;
|
|
{$ENDIF CLR}
|
|
finally
|
|
Ini.Free;
|
|
end;
|
|
end;
|
|
|
|
// Initialization (ini) Files helper routines
|
|
const
|
|
ItemCountName = 'Count';
|
|
|
|
procedure IniReadStrings(IniFile: TCustomIniFile; const Section: string; Strings: TStrings);
|
|
var
|
|
Count, I: Integer;
|
|
begin
|
|
with IniFile do
|
|
begin
|
|
Strings.BeginUpdate;
|
|
try
|
|
Strings.Clear;
|
|
Count := ReadInteger(Section, ItemCountName, 0);
|
|
for I := 0 to Count - 1 do
|
|
Strings.Add(ReadString(Section, IntToStr(I), ''));
|
|
finally
|
|
Strings.EndUpdate;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure IniWriteStrings(IniFile: TCustomIniFile; const Section: string; Strings: TStrings);
|
|
var
|
|
I: Integer;
|
|
begin
|
|
with IniFile do
|
|
begin
|
|
EraseSection(Section);
|
|
WriteInteger(Section, ItemCountName, Strings.Count);
|
|
for I := 0 to Strings.Count - 1 do
|
|
WriteString(Section, IntToStr(I), Strings[I]);
|
|
end;
|
|
end;
|
|
|
|
// History:
|
|
|
|
// $Log: JclIniFiles.pas,v $
|
|
// Revision 1.10 2005/05/05 20:08:43 ahuser
|
|
// JCL.NET support
|
|
//
|
|
// Revision 1.9 2005/02/24 16:34:40 marquardt
|
|
// remove divider lines, add section lines (unfinished)
|
|
//
|
|
// Revision 1.8 2004/09/28 14:22:01 rrossmair
|
|
// removed PH contributions
|
|
//
|
|
// Revision 1.7 2004/07/30 07:20:25 marquardt
|
|
// fixing TStringLists, adding BeginUpdate/EndUpdate
|
|
//
|
|
// Revision 1.6 2004/06/02 03:23:46 rrossmair
|
|
// cosmetic changes in several units (code formatting, help TODOs processed etc.)
|
|
//
|
|
// Revision 1.5 2004/05/14 15:24:46 rrossmair
|
|
// fixed header
|
|
//
|
|
// Revision 1.4 2004/05/05 00:04:11 mthoma
|
|
// Updated headers: Added donors as contributors, adjusted the initial authors, added cvs names when they were not obvious. Changed $data to $date where necessary,
|
|
//
|
|
|
|
end.
|