Simba/Units/RUTIS/Rutis_INI_Settings.pas

94 lines
2.3 KiB
Plaintext

Unit Rutis_INI_Settings;
Interface
Uses
SysUtils, IniFiles, registry, Rutis_Engine;
Var
Rutis_INI : TCustomIniFile;
Procedure RINISettings_Open(AppPath, ScriptPath : String);
Function RINISettings_OpenReg : Boolean;
Procedure RINISettings_OpenIni(FileName : String);
Procedure RINISettings_ApplyMainSettings(Engine : TRutisEngine);
Implementation
Procedure RINISettings_Open(AppPath, ScriptPath : String);
Begin
If FileExists(ScriptPath + '\RutisSettings.ini') Then
Begin
RINISettings_OpenIni(ScriptPath + '\RutisSettings.ini');
exit;
End;
If RINISettings_OpenReg Then exit;
SetCurrentDir(AppPath);
If FileExists('.\Rutis_Settings.ini') Then
Begin
RINISettings_OpenIni('.\Rutis_Settings.ini');
exit;
End;
If FileExists('..\Rutis_Settings.ini') Then
Begin
RINISettings_OpenIni('..\Rutis_Settings.ini');
exit;
End;
RINISettings_OpenReg;
End;
Function RINISettings_OpenReg : Boolean;
Begin
Rutis_INI.Free;
Rutis_INI := TRegistryIniFile.Create('Software\RUTIS');
Result := Rutis_INI.SectionExists('');
End;
Procedure RINISettings_OpenIni(FileName : String);
Begin
Rutis_INI.Free;
Rutis_INI := TIniFile.Create(FileName);
End;
Procedure RINISettings_ApplyMainSettings(Engine : TRutisEngine);
Var
i : Integer;
Str : String;
Begin
If Rutis_INI = nil Then
Rutis_INI := TRegistryIniFile.Create('Software\RUTIS');
//Libary Paths
SetLength(Engine.UnitFileManager.Paths, 0);
i := 0;
While True Do
Begin
Str := Rutis_INI.ReadString('Compiler\Libary', 'Path' + IntToStr(i), '');
If Str = '' Then break;
Engine.UnitFileManager.AddPath(Str);
Inc(i);
End;
//Compiler Settings
Engine.Compiler.optArrangeFields := Rutis_INI.ReadBool('Compiler', 'ArrangeRecordFields', True);
Engine.Compiler.optArrangeSize := Rutis_INI.ReadInteger('Compiler', 'RecordArrangeSize', 8);
Engine.OptProcessTimerCount := Rutis_INI.ReadInteger('VM', 'ProcessTickCount', 100000);
//SAVE SETTINGS
Rutis_INI.WriteBool('Compiler', 'ArrangeRecordFields', Engine.Compiler.optArrangeFields);
Rutis_INI.WriteInteger('Compiler', 'RecordArrangeSize', Engine.Compiler.optArrangeSize);
Rutis_INI.WriteInteger('VM', 'ProcessTickCount', Engine.OptProcessTimerCount);
End;
Initialization
Finalization
Rutis_INI.Free;
End.