{**************************************************************************************************} { } { 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: 2006-07-24 07:34:39 +0200 (lun., 24 juil. 2006) $ unit JclIniFiles; {$I jcl.inc} interface uses {$IFDEF UNITVERSIONING} JclUnitVersioning, {$ENDIF UNITVERSIONING} 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); {$IFDEF UNITVERSIONING} const UnitVersioning: TUnitVersionInfo = ( RCSfile: '$URL: https://jcl.svn.sourceforge.net:443/svnroot/jcl/tags/JCL-1.100-Build2646/jcl/source/common/JclIniFiles.pas $'; Revision: '$Revision: 1694 $'; Date: '$Date: 2006-07-24 07:34:39 +0200 (lun., 24 juil. 2006) $'; LogPath: 'JCL\source\common' ); {$ENDIF UNITVERSIONING} 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; {$IFDEF UNITVERSIONING} initialization RegisterUnitVersion(HInstance, UnitVersioning); finalization UnregisterUnitVersion(HInstance); {$ENDIF UNITVERSIONING} end.