unit registryuserpreferences; { $Id: registryuserpreferences.pas,v 1.1 2004/09/30 22:35:47 savage Exp $ } {******************************************************************************} { } { JEDI-SDL : Pascal units for SDL - Simple DirectMedia Layer } { Wrapper class for Windows Register and INI Files } { } { The initial developer of this Pascal code was : } { Dominqiue Louis <Dominique@SavageSoftware.com.au> } { } { Portions created by Dominqiue Louis are } { Copyright (C) 2000 - 2001 Dominqiue Louis. } { } { } { Contributor(s) } { -------------- } { } { } { Obtained through: } { Joint Endeavour of Delphi Innovators ( Project JEDI ) } { } { You may retrieve the latest version of this file at the Project } { JEDI home page, located at http://delphi-jedi.org } { } { The contents of this file are used with permission, 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/MPL-1.1.html } { } { 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. } { } { Description } { ----------- } { } { } { } { } { } { } { } { Requires } { -------- } { The SDL Runtime libraris on Win32 : SDL.dll on Linux : libSDL.so } { They are available from... } { http://www.libsdl.org . } { } { Programming Notes } { ----------------- } { } { } { } { } { Revision History } { ---------------- } { September 23 2004 - DL : Initial Creation } { $Log: registryuserpreferences.pas,v $ Revision 1.1 2004/09/30 22:35:47 savage Changes, enhancements and additions as required to get SoAoS working. } {******************************************************************************} interface uses {$IFDEF REG} Registry, {$ELSE} IniFiles, {$ENDIF} Classes, userpreferences; type TRegistryUserPreferences = class( TUserPreferences ) private protected function GetSection( const Index : Integer ) : string; virtual; abstract; function GetIdentifier( const Index : Integer ) : string; virtual; abstract; function GetDefaultBoolean( const Index : Integer ) : Boolean; override; function GetBoolean( const Index : Integer ) : Boolean; override; procedure SetBoolean( const Index : Integer; const Value : Boolean ); override; function GetDefaultDateTime( const Index : Integer ) : TDateTime; override; function GetDateTime( const Index : Integer ) : TDateTime; override; procedure SetDateTime( const Index : Integer; const Value : TDateTime ); override; function GetDefaultInteger( const Index : Integer ) : Integer; override; function GetInteger( const Index : Integer ) : Integer; override; procedure SetInteger( const Index : Integer; const Value : Integer ); override; function GetDefaultFloat( const Index : Integer ) : single; override; function GetFloat( const Index : Integer ) : single; override; procedure SetFloat( const Index : Integer; const Value : single ); override; function GetDefaultString( const Index : Integer ) : string; override; function GetString( const Index : Integer ) : string; override; procedure SetString( const Index : Integer; const Value : string ); override; public Registry : {$IFDEF REG}TRegIniFile{$ELSE}TIniFile{$ENDIF}; constructor Create( const FileName : string = '' ); reintroduce; destructor Destroy; override; procedure Update; override; end; implementation uses SysUtils; { TRegistryUserPreferences } constructor TRegistryUserPreferences.Create( const FileName : string ); var defFileName : string; begin inherited Create; if FileName <> '' then defFileName := FileName else defFileName := ChangeFileExt( ParamStr( 0 ), '.ini' ); Registry := {$IFDEF REG}TRegIniFile{$ELSE}TIniFile{$ENDIF}.Create( defFileName ); end; destructor TRegistryUserPreferences.Destroy; begin Update; Registry.Free; Registry := nil; inherited; end; function TRegistryUserPreferences.GetBoolean( const Index : Integer ) : Boolean; begin Result := Registry.ReadBool( GetSection( Index ), GetIdentifier( Index ), GetDefaultBoolean( Index ) ); end; function TRegistryUserPreferences.GetDateTime( const Index : Integer ): TDateTime; begin Result := Registry.ReadDateTime( GetSection( Index ){$IFNDEF REG}, GetIdentifier( Index ), GetDefaultDateTime( Index ){$ENDIF} ); end; function TRegistryUserPreferences.GetDefaultBoolean( const Index : Integer ) : Boolean; begin result := false; end; function TRegistryUserPreferences.GetDefaultDateTime( const Index: Integer ) : TDateTime; begin result := Now; end; function TRegistryUserPreferences.GetDefaultFloat( const Index: Integer ) : single; begin result := 0.0; end; function TRegistryUserPreferences.GetDefaultInteger(const Index : Integer ) : Integer; begin result := 0; end; function TRegistryUserPreferences.GetDefaultString( const Index : Integer ) : string; begin result := ''; end; function TRegistryUserPreferences.GetFloat( const Index : Integer ): single; begin Result := Registry.ReadFloat( GetSection( Index ){$IFNDEF REG}, GetIdentifier( Index ), GetDefaultFloat( Index ){$ENDIF} ); end; function TRegistryUserPreferences.GetInteger( const Index : Integer ) : Integer; begin Result := Registry.ReadInteger( GetSection( Index ), GetIdentifier( Index ), GetDefaultInteger( Index ) ); end; function TRegistryUserPreferences.GetString( const Index : Integer ): string; begin Result := Registry.ReadString( GetSection( Index ), GetIdentifier( Index ), GetDefaultString( Index ) ); end; procedure TRegistryUserPreferences.SetBoolean( const Index : Integer; const Value : Boolean ); begin Registry.WriteBool( GetSection( Index ), GetIdentifier( Index ), Value ); inherited; end; procedure TRegistryUserPreferences.SetDateTime( const Index: Integer; const Value: TDateTime ); begin Registry.WriteDateTime( GetSection( Index ){$IFNDEF REG}, GetIdentifier( Index ){$ENDIF}, Value ); inherited; end; procedure TRegistryUserPreferences.SetFloat(const Index: Integer; const Value: single); begin Registry.WriteFloat( GetSection( Index ){$IFNDEF REG}, GetIdentifier( Index ){$ENDIF}, Value ); inherited; end; procedure TRegistryUserPreferences.SetInteger( const Index, Value : Integer ); begin Registry.WriteInteger( GetSection( Index ), GetIdentifier( Index ), Value ); inherited; end; procedure TRegistryUserPreferences.SetString( const Index : Integer; const Value : string ); begin Registry.WriteString( GetSection( Index ), GetIdentifier( Index ), Value ); inherited; end; procedure TRegistryUserPreferences.Update; begin {$IFDEF REG} Registry.CloseKey; {$ELSE} Registry.UpdateFile; {$ENDIF} end; end.