expertcad/SRC/SCSNormBase/U_BaseSettings.pas
2025-05-12 10:21:16 +03:00

834 lines
29 KiB
ObjectPascal

unit U_BaseSettings;
interface
Uses SysUtils, Classes, Windows, Forms, Graphics, IniFiles, U_BaseCommon, U_ProtectionCommon;
const
{$if Defined(ES_GRAPH_SC)}
fnSCSIniFile = 'sc_graph.ini';
{$ELSE}
fnSCSIniFile = 'Scs.ini';
{$IFEND}
fnUpdateIni = 'Update.ini';
const DefNBPath = 'NormBase\NB.dat';
const DefPMPath = 'Data\PM.dat';
bnNB = 'NB';
bnPM = 'PM';
const ComponPictFileName = 'ComponPicture.jpg';
//*** Sections
const scNormBase = 'NormBase';
scProjMan = 'ProjectManager';
scColorObjects = 'ColorObjects';
scControls = 'Controls';
scUpdateParams = 'UPDATEPARAMS';
scEnvironmentDir = 'EnvironmentDir';
// Äëÿ ôàéëà êîíôèãóðàöèè ãðóïï êîìïîíåíòîâ
scGeneral = 'General';
scCompTypeGroups = 'CompTypeGroups';
scElectrical = 'Electrical'; // Tolik 03/03/2021 --
scReservFtp = 'ReservFtp'; // Tolik 02/01/2025 -- äëÿ ðåçåðâíîãî êîïèðîâàíèÿ íà ÔÒÏ
idtSelectedCompType = 'SelectedCompType';
//idtGroupCondition = 'GroupCondition';
//*** Idents
const idtPath = 'Path';
idtPnAdditionRestored = 'PnAdditionRestored';
idtColorZeroPriceComponent = 'ColorZeroPriceComponent';
idtControlJoinByNetType = 'ControlJoinByNetType';
idtComplectControlByProducer = 'ComplectControlByProducer';
idtControlJoinByProperties = 'ControlJoinByProperties';
idtControlComplectByProperties = 'ControlComplectByProperties';
idtDefaultNoLineCompon = 'DefaultNoLineCompon';
idtDefaultLineCompon = 'DefaultLineCompon';
idtDefaultCorkCompon = 'DefaultCorkCompon';
idtDefaultTjoinCompon = 'DefaultTjoinCompon';
idtNDS = 'NDS';
idtDisableEdit = 'Disable Edit';
idtFilterType = 'Filter Type';
//idtIsObjectIndexing = 'IsObjectIndexing';
idtIsAdministration = 'IsAdministration';
idtIsUseFilter = 'IsUseFilter';
//idtReserveLength = 'ReserveLength';
//idtAccountReserveLength = 'AccountReserveLength';
//idtAutoInsertingCompons = 'AutoInsertingCompons';
idtDefNewItemType = 'DefNewItemType';
idtDefCheckState = 'DefCheckState';
idtRemindToBackUpBase = 'RemindToBackUpBase';
idtRemindToBackUpBaseTime = 'RemindToBackUpBaseTime';
idtRepDesignLanguageFile = 'RepDesignLanguageFile';
idtRepPricePrecision = 'RepPricePrecision';
idtRepKolvoPrecision = 'RepKolvoPrecision';
idtSavedList = 'SavedList';
idtSavedProject = 'SavedProject';
idtLastNBDir = 'LastNBDir';
idtNBLineComponGUIDForConfigurator = 'NBLineComponGUIDForConfigurator';
idtUpdatePath = 'UpdatePath';
idtCurrencyConvertionNB2PM = 'CurrencyConvertionNB2PM';
idtFSCSMain_IsPanelExpertMode = 'F_SCSMain_IsPanelExpertMode';
idtColorResourceActive = 'ColorResourceActive';
idtColorResourceBack = 'ColorResourceBack';
idtColorResourceFont = 'ColorResourceFont';
idtColorResourceComponActive = 'ColorResourceComponActive';
idtColorResourceComponBack = 'ColorResourceComponBack';
idtColorResourceComponFont = 'ColorResourceComponFont';
idtColorNormActive = 'ColorNormActive';
idtColorNormBack = 'ColorNormBack';
idtColorNormFont = 'ColorNormFont';
idtColorTotalKolvoActive = 'ColorTotalKolvoActive';
idtColorTotalKolvoBack = 'ColorTotalKolvoBack';
idtColorTotalKolvoFont = 'ColorTotalKolvoFont';
idtLastpcObjectsTabIndex = 'LastpcObjectsTabIndex';
idtStayOnTopPCObjects = 'StayOnTopPCObjects';
idtLiteVersion = 'LiteVersion';
idtUseLiteFunctional = 'UseLiteFunctional';
idtAllowConvertInterfToUniversal = 'AllowConvertInterfToUniversal';
idtUseVerticalTraces = 'UseVerticalTraces';
idtDropObjByOneClick = 'DropObjByOneClick'; // Tolik 01/08/2019 --
idtStoreLastPaths = 'StoreLastPaths'; // Tolik 01/08/2019 --
idtAutoScaleRasterImages = 'AutoScaleRasterImages'; // Tolik 09/08/219 --
idtComponDrawMode = 'ComponDrawMode';
idtComponDrawBasement = 'ComponDrawBasement';
idtSendInfo = 'SendInfo';
idtTraceElectrical = 'TraceElectrical'; // Tolik 03/03/2021 --
idtShowAutoCreatedGuides = 'ShowAutoCreatedGuides';
idtAllowDropCableToRoute = 'AllowDropCableToRoute'; // Tolik 28/05/2021 --
idtAutoRouteCableAfterTraceCreation = 'AutoRouteCableAfterTraceCreation'; // Tolik 09/08/2021 --
idtAutoAddNetworkEquipment = 'AutoAddNetworkEquipment'; // Tolik 26/03/2024
idtConnectString = 'ConnectString'; // Tolik 02/01/2025 --
//idtDirProjs = 'DirProjs';
//idtDirCompons = 'DirCompons';
//idtDirOtherSettings = 'DirOtherSettings';
//idtDirFilters = 'DirFilters';
//idtDirBackgroundLayers = 'DirBackglayers';
//idtDirArchPlans = 'DirArchPlans';
//idtDirDXF = 'DirDXF';
{
type TListSettingRecord = record
HeightRoom: Double;
HeightCeiling: Double; //*** äëÿ ïîòîëêà
HeightSocket: Double; //*** äëÿ ðîçåòîê
HeightCorob: Double; //*** äëÿ êîðîáîâ
LengthKoef: Double;
PortReserv: Double;
MultiportReserv: Double;
ShowObjectType: TShowType; //*** îòîáðàæàòü ïîëíîå èëè êðàòêîå íàçâàíèå
ShowObjectMarking: Boolean;
GroupListObjectsByType: Boolean;
end; }
function GetIniPath: String;
function ReadAllFromIni: TSCSIni;
function ReadNBIni: TNBIni;
function ReadPMIni: TPMIni;
function ReadColors: TColorObjectsIni;
function ReadControls: TControlsIni;
function ReadEnvironments: TEnvironmentsIni;
function ReadEnvironmentDir(ADirType: Integer; const ADefDir: string): string;
procedure WriteNBIni(ANBIni: TNBIni);
procedure WritePMIni(APMIni: TPMIni);
procedure WriteControls(AControls: TControlsIni);
procedure WriteColors(var AIni: TSCSIni);
procedure WriteEnvironmentDir(ADirType: Integer; const ADir: string);
procedure ReadIniSectionKeys(const AFileName, ASection: string; ADestKeys: TStrings);
function ReadSetting(AFileName: String; ADataType: Integer; ASection, AIdent: String; ADefault: Variant): Variant;
function ReadSettingMemIni(const AFileName: String; ADataType: Integer;
const ASection, AIdent: String; ADefault: Variant): Variant;
procedure WriteSetting(AFileName: String; ADataType: Integer;
ASection, AIdent: String; AValue: Variant; ADirPath: String = '');
procedure WriteSettingMemIni(const AFileName: String; ADataType: Integer;
const ASection, AIdent: String; AValue: Variant);
function ReadDBPath(AGDBMode: TDBKind): String;
function ReadPnAdditionRestored(AGDBMode: TDBKind): Boolean;
function ReadLastNBDir: Integer;
function ReadDefaultIDCompon(AIsLine: Integer): Integer;
function ReadDefaultIDCorkCompon: Integer;
function ReadDefaultIDTjoinCompon: Integer;
function ReadNDS: Double;
function ReadNBDisabeEdit(AGDBMode: TDBKind): Boolean;
//function ReadIsObjectIndexing: Boolean;
function ReadIsAdministration: Boolean;
//function ReadReserveLength: Double;
//function ReadAccountReserveLength: Boolean;
//function ReadAutoInsertingCompons: Boolean;
function ReadDefNewItemType: Integer;
function ReadDefCheckState: Boolean;
function ReadSavedIDList: Integer;
function ReadSavedIDProject: Integer;
function ReadUpdatePath: String;
procedure WritePnAdditionRestored(AGDBMode: TDBKind; ARestored: Boolean);
procedure WriteLastNBDir(AGDBMode: TDBKind; ALastNBDir: Integer);
procedure WriteUpdatePath(AUpdatePath: String; ADirPath: String = '');
{function SetDBPath(AGDBMode: TDBKind; ADBPath: string);
function SetDefaultIDCompon(AIsLine: Integer; ADefIDCompon: Integer);
function SetNDS(ANDS: Double);
function SetNBDisabeEdit(AGDBMode: TDBKind; ANBDisabeEdit: Boolean);
function SetIsObjectIndexing(AIsObjectIndexing: Boolean);
function SetIsAdministration(AIsAdministration: Boolean);
function SetDefNewItemType(ADefNewItemType: Integer);
function SetDefCheckState(ADefCheckState: Boolean);
function SetSavedIDList(ASavedIDList: Integer);
}
implementation
uses U_Main, Unit_DM_SCS, FIBQuery, U_BaseOptions;
function GetIniPath: String;
begin
{$if Defined(ES_GRAPH_SC)}
Result := ExeDir + '\' + fnSCSIniFile;
{$else}
Result := ExtractFilePath(paramstr(0)) + fnSCSIniFile;
{$ifend}
end;
function ReadAllFromIni: TSCSIni;
begin
ZeroMemory(@Result, SizeOf(TSCSIni));
Result.NB := ReadNBIni;
Result.PM := ReadPMIni;
Result.Controls := ReadControls;
end;
function ReadNBIni: TNBIni;
var
Ini: TIniFile;
begin
Result.AutoShowParams := true;
Result.SaveConnParams := true;
Result.LicenseTypeInt := 1;
Result.ServerName := '';
Result.LocalPathToNB := '';
Result.Common.DBPath := '';
Result.Common.PnAdditionRestored := true;
Result.ColorZeroPriceComponent := clRed;
Result.ControlJoinByNetType := true;
Result.ComplectControlByProducer := false;
Result.ControlJoinByProperties := true;
Result.ControlComplectByProperties := true;
Result.DisableEdit := false;
Result.IDLastNBDir := -1;
Result.IsAdministration := false;
Result.FilterType := fltNone;
Result.IsUseFilter := false;
Result.RemindToBackUpBase := true;
{$IF Defined(ES_GRAPH_SC)}
Result.RemindToBackUpBase := false;
Result.RemindToBackUpBaseTime := 65;
{$ELSE}
Result.RemindToBackUpBaseTime := 15;
{$IFEND}
Result.CurrencyConvertionNB2PM := cckByTarget;
try
if FileExists(GetIniPath) then
begin
Ini := TIniFile.Create(GetIniPath);
Result.AutoShowParams := ini.ReadBool(scNormBase, pnShowLicenceType, Result.AutoShowParams);
Result.LicenseTypeInt := ini.ReadInteger(scNormBase, pnLicenseTypeNB, Result.LicenseTypeInt);
Result.ServerName := Ini.ReadString(scNormBase, pnServerNameNB, Result.ServerName);;
Result.LocalPathToNB := Ini.ReadString(scNormBase, pnLocalPathToNB, Result.LocalPathToNB);;
Result.Common.DBPath := Ini.ReadString(scNormBase, idtPath, Result.Common.DBPath);
Result.Common.PnAdditionRestored := Ini.ReadBool(scNormBase, idtPnAdditionRestored, Result.Common.PnAdditionRestored);
Result.ColorZeroPriceComponent := Ini.ReadInteger(scNormBase, idtColorZeroPriceComponent, Result.ColorZeroPriceComponent);
Result.ControlJoinByNetType := ini.ReadBool(scNormBase, idtControlJoinByNetType, Result.ControlJoinByNetType);
Result.ComplectControlByProducer := ini.ReadBool(scNormBase, idtComplectControlByProducer, Result.ComplectControlByProducer);
Result.ControlJoinByProperties := ini.ReadBool(scNormBase, idtControlJoinByProperties, Result.ControlJoinByProperties);
Result.ControlComplectByProperties := ini.ReadBool(scNormBase, idtControlComplectByProperties, Result.ControlComplectByProperties);
Result.DisableEdit := ini.ReadBool(scNormBase, idtDisableEdit, Result.DisableEdit);
Result.IDLastNBDir := ini.ReadInteger(scNormBase, idtLastNBDir, Result.IDLastNBDir);
Result.IsAdministration := ini.ReadBool(scNormBase, idtIsAdministration, Result.IsAdministration);
Result.FilterType := TFilterType(ini.ReadInteger(scNormBase, idtFilterType, Ord(Result.FilterType)));
Result.IsUseFilter := ini.ReadBool(scNormBase, idtIsUseFilter, Result.IsUseFilter);
Result.RemindToBackUpBase := ini.ReadBool(scNormBase, idtRemindToBackUpBase, Result.RemindToBackUpBase);
Result.RemindToBackUpBaseTime := ini.ReadInteger(scNormBase, idtRemindToBackUpBaseTime, Result.RemindToBackUpBaseTime);
Result.CurrencyConvertionNB2PM := ini.ReadInteger(scNormBase, idtCurrencyConvertionNB2PM, Result.CurrencyConvertionNB2PM);
Ini.Free;
end;
except
on E: Exception do AddExceptionToLog(': '+E.Message);
end;
{$IF Defined(TRIAL_SCS)}
Result.RemindToBackUpBase := False;
{$IFEND}
end;
function ReadPMIni: TPMIni;
var
Ini: TIniFile;
begin
Result.Common.DBPath := '';
Result.SaveConnParams := true;
Result.Common.PnAdditionRestored := true;
Result.IDLastProject := 0;
try
if FileExists(GetIniPath) then
begin
Ini := TIniFile.Create(GetIniPath);
Result.Common.DBPath := Ini.ReadString(scProjMan, idtPath, Result.Common.DBPath);
Result.Common.PnAdditionRestored := Ini.ReadBool(scProjMan, idtPnAdditionRestored, Result.Common.PnAdditionRestored);
Result.IDLastProject := Ini.ReadInteger(scProjMan, idtSavedProject, Result.IDLastProject);
Result.RepDesignLanguageFile := Ini.ReadString(scProjMan, idtRepDesignLanguageFile, fnRepDesignLangRus);
Result.RepPricePrecision := Ini.ReadInteger(scProjMan, idtRepPricePrecision, 2);
Result.RepKolvoPrecision := Ini.ReadInteger(scProjMan, idtRepKolvoPrecision, 2);
Result.NBLineComponGUIDForConfigurator := Ini.ReadString(scProjMan, idtNBLineComponGUIDForConfigurator, '');
Ini.Free;
end;
except
on E: Exception do AddExceptionToLog(': '+E.Message);
end;
end;
function ReadColors: TColorObjectsIni;
var
Ini: TIniFile;
begin
Result.Resource.Active := true;
Result.Resource.Back := clYellow;
Result.Resource.Font := clBlack;
Result.ResourceCompon.Active := true;
Result.ResourceCompon.Back := $004080FF;
Result.ResourceCompon.Font := clBlack;
Result.Norm.Active := false;
Result.Norm.Back := clLime;
Result.Norm.Font := clBlack;
Result.TotalKolvo.Active := true;
Result.TotalKolvo.Back := clRed;
Result.TotalKolvo.Font := clBlack;
try
if FileExists(GetIniPath) then
begin
Ini := TIniFile.Create(GetIniPath);
Result.Resource.Active := Ini.ReadBool(scColorObjects, idtColorResourceActive, Result.Resource.Active);
Result.Resource.Back := Ini.ReadInteger(scColorObjects, idtColorResourceBack, Result.Resource.Back);
Result.Resource.Font := Ini.ReadInteger(scColorObjects, idtColorResourceFont, Result.Resource.Font);
Result.ResourceCompon.Active := Ini.ReadBool(scColorObjects, idtColorResourceComponActive, Result.ResourceCompon.Active);
Result.ResourceCompon.Back := Ini.ReadInteger(scColorObjects, idtColorResourceComponBack, Result.ResourceCompon.Back);
Result.ResourceCompon.Font := Ini.ReadInteger(scColorObjects, idtColorResourceComponFont, Result.ResourceCompon.Font);
Result.Norm.Active := Ini.ReadBool(scColorObjects, idtColorNormActive, Result.Norm.Active);
Result.Norm.Back := Ini.ReadInteger(scColorObjects, idtColorNormBack, Result.Norm.Back);
Result.Norm.Font := Ini.ReadInteger(scColorObjects, idtColorNormFont, Result.Norm.Font);
Result.TotalKolvo.Active := Ini.ReadBool(scColorObjects, idtColorTotalKolvoActive, Result.TotalKolvo.Active);
Result.TotalKolvo.Back := Ini.ReadInteger(scColorObjects, idtColorTotalKolvoBack, Result.TotalKolvo.Back);
Result.TotalKolvo.Font := Ini.ReadInteger(scColorObjects, idtColorTotalKolvoFont, Result.Norm.Font);
Ini.Free;
end;
except
on E: Exception do AddExceptionToLogEx('ReadColors', E.Message);
end;
end;
function ReadControls: TControlsIni;
var
Ini: TIniFile;
begin
Result.F_SCSMain_IsPanelExpertMode := false;
try
if FileExists(GetIniPath) then
begin
Ini := TIniFile.Create(GetIniPath);
Result.F_SCSMain_IsPanelExpertMode := Ini.ReadBool(scControls, idtFSCSMain_IsPanelExpertMode, Result.F_SCSMain_IsPanelExpertMode);
Ini.Free;
end;
except
on E: Exception do AddExceptionToLogEx('ReadControls', E.Message);
end;
end;
function ReadEnvironments: TEnvironmentsIni;
begin
Result.TempDir := ReadEnvironmentDir(dctTemp, '');
end;
function ReadEnvironmentDir(ADirType: Integer; const ADefDir: string): string;
var
Ini: TIniFile;
begin
Result := ADefDir;
try
if FileExists(GetIniPath) then
begin
Ini := TIniFile.Create(GetIniPath);
Result := Ini.ReadString(scEnvironmentDir, IntToStr(ADirType), ADefDir);
if Result = '' then
Result := ADefDir;
Ini.Free;
end;
except
on E: Exception do AddExceptionToLogEx('ReadEnvironmentDir', E.Message);
end;
end;
procedure WriteNBIni(ANBIni: TNBIni);
var
Ini: TIniFile;
begin
try
Ini := TIniFile.Create(GetIniPath);
Ini.WriteString(scNormBase, idtPath, ANBIni.Common.DBPath);
if (ANBIni.SaveConnParams) then
begin
Ini.WriteBool(scNormBase, pnShowLicenceType, ANBIni.AutoShowParams);
Ini.WriteInteger(scNormBase, pnLicenseTypeNB, ANBIni.LicenseTypeInt);
Ini.WriteString(scNormBase, pnServerNameNB, ANBIni.ServerName);
Ini.WriteString(scNormBase, pnLocalPathToNB, ANBIni.LocalPathToNB);
end;
Ini.WriteBool(scNormBase, idtPnAdditionRestored, ANBIni.Common.PnAdditionRestored);
Ini.WriteInteger(scNormBase, idtColorZeroPriceComponent, ANBIni.ColorZeroPriceComponent);
ini.WriteBool(scNormBase, idtControlJoinByNetType, ANBIni.ControlJoinByNetType);
ini.WriteBool(scNormBase, idtComplectControlByProducer, ANBIni.ComplectControlByProducer);
ini.WriteBool(scNormBase, idtControlJoinByProperties , ANBIni.ControlJoinByProperties);
ini.WriteBool(scNormBase, idtControlComplectByProperties , ANBIni.ControlComplectByProperties);
ini.WriteBool(scNormBase, idtDisableEdit, ANBIni.DisableEdit);
ini.WriteBool(scNormBase, idtIsAdministration, ANBIni.IsAdministration);
ini.WriteInteger(scNormBase, idtLastNBDir, ANBIni.IDLastNBDir);
ini.WriteInteger(scNormBase, idtFilterType, Ord(ANBIni.FilterType));
ini.WriteBool(scNormBase, idtIsUseFilter, ANBIni.IsUseFilter);
ini.WriteBool(scNormBase, idtRemindToBackUpBase, ANBIni.RemindToBackUpBase);
ini.WriteInteger(scNormBase, idtRemindToBackUpBaseTime, ANBIni.RemindToBackUpBaseTime);
ini.WriteInteger(scNormBase, idtCurrencyConvertionNB2PM, ANBIni.CurrencyConvertionNB2PM);
Ini.Free;
except
on E: Exception do AddExceptionToLog(': '+E.Message);
end;
end;
procedure WritePMIni(APMIni: TPMIni);
var
Ini: TIniFile;
begin
try
Ini := TIniFile.Create(GetIniPath);
if APMIni.SaveConnParams = true then
Ini.WriteString(scProjMan, idtPath, APMIni.Common.DBPath);
Ini.WriteBool(scProjMan, idtPnAdditionRestored, APMIni.Common.PnAdditionRestored);
Ini.WriteInteger(scProjMan, idtSavedProject, APMIni.IDLastProject);
Ini.WriteString(scProjMan, idtRepDesignLanguageFile, APMIni.RepDesignLanguageFile);
Ini.WriteInteger(scProjMan, idtRepPricePrecision, APMIni.RepPricePrecision);
Ini.WriteInteger(scProjMan, idtRepKolvoPrecision, APMIni.RepKolvoPrecision);
Ini.WriteString(scProjMan, idtNBLineComponGUIDForConfigurator, APMIni.NBLineComponGUIDForConfigurator);
Ini.Free;
except
on E: Exception do AddExceptionToLog('WritePMIni: '+E.Message);
end;
end;
procedure WriteControls(AControls: TControlsIni);
var
Ini: TIniFile;
begin
try
Ini := TIniFile.Create(GetIniPath);
Ini.WriteBool(scControls, idtFSCSMain_IsPanelExpertMode, AControls.F_SCSMain_IsPanelExpertMode);
Ini.Free;
except
on E: Exception do AddExceptionToLog('WriteControls: '+E.Message);
end;
end;
procedure WriteColors(var AIni: TSCSIni);
var
Ini: TIniFile;
begin
try
Ini := TIniFile.Create(GetIniPath);
Ini.WriteBool(scColorObjects, idtColorResourceActive, AIni.Colors.Resource.Active);
Ini.WriteInteger(scColorObjects, idtColorResourceBack, AIni.Colors.Resource.Back);
Ini.WriteInteger(scColorObjects, idtColorResourceFont, AIni.Colors.Resource.Font);
Ini.WriteBool(scColorObjects, idtColorResourceComponActive, AIni.Colors.ResourceCompon.Active);
Ini.WriteInteger(scColorObjects, idtColorResourceComponBack, AIni.Colors.ResourceCompon.Back);
Ini.WriteInteger(scColorObjects, idtColorResourceComponFont, AIni.Colors.ResourceCompon.Font);
Ini.WriteBool(scColorObjects, idtColorNormActive, AIni.Colors.Norm.Active);
Ini.WriteInteger(scColorObjects, idtColorNormBack, AIni.Colors.Norm.Back);
Ini.WriteInteger(scColorObjects, idtColorNormFont, AIni.Colors.Norm.Font);
Ini.WriteBool(scColorObjects, idtColorTotalKolvoActive, AIni.Colors.TotalKolvo.Active);
Ini.WriteInteger(scColorObjects, idtColorTotalKolvoBack, AIni.Colors.TotalKolvo.Back);
Ini.WriteInteger(scColorObjects, idtColorTotalKolvoFont, AIni.Colors.TotalKolvo.Font);
Ini.Free;
except
on E: Exception do AddExceptionToLog('WriteControls: '+E.Message);
end;
end;
procedure WriteEnvironmentDir(ADirType: Integer; const ADir: string);
var
Ini: TIniFile;
begin
try
if FileExists(GetIniPath) then
begin
Ini := TIniFile.Create(GetIniPath);
Ini.WriteString(scEnvironmentDir, IntToStr(ADirType), ADir);
Ini.Free;
end;
except
on E: Exception do AddExceptionToLogEx('WriteEnvironmentDir', E.Message);
end;
end;
procedure ReadIniSectionKeys(const AFileName, ASection: string; ADestKeys: TStrings);
var
Ini: TMemIniFile;
begin
try
Ini := TMemIniFile.Create(AFileName);
Ini.ReadSection(ASection, ADestKeys);
FreeAndNil(Ini);
except
on E: Exception do AddExceptionToLog('ReadSetting: '+E.Message);
end;
end;
function ReadSetting(AFileName: String; ADataType: Integer; ASection, AIdent: String; ADefault: Variant): Variant;
var
ini: TIniFile;
begin
try
try
Result := ADefault;
ini := nil;
if FileExists(fnSCSIniFile) then
begin
{$if Defined(ES_GRAPH_SC)}
ini := TIniFile.Create(ExeDir + '\' + AFileName);
{$else}
ini := TIniFile.Create(extractfilepath(paramstr(0)) + AFileName);
{$ifend}
case ADataType of
dtBoolean:
Result := ini.ReadBool(ASection, AIdent, ADefault);
dtFloat:
Result := ini.ReadFloat(ASection, AIdent, ADefault);
dtInteger:
Result := ini.ReadInteger(ASection, AIdent, ADefault);
dtString:
Result := ini.ReadString(ASection, AIdent, ADefault);
end;
end;
except
on E: Exception do AddExceptionToLog('ReadSetting: '+E.Message);
end;
finally
if ini <> nil then
ini.Free;
end;
end;
function ReadSettingMemIni(const AFileName: String; ADataType: Integer;
const ASection, AIdent: String; ADefault: Variant): Variant;
var
ini: TMemIniFile;
begin
Result := ADefault;
try
try
ini := TMemIniFile.Create(AFileName);
case ADataType of
dtBoolean:
Result := ini.ReadBool(ASection, AIdent, ADefault);
dtFloat:
Result := ini.ReadFloat(ASection, AIdent, ADefault);
dtInteger:
Result := ini.ReadInteger(ASection, AIdent, ADefault);
dtString:
Result := ini.ReadString(ASection, AIdent, ADefault);
end;
except
on E: Exception do AddExceptionToLog('ReadSettingMemIni: '+E.Message);
end;
finally
if ini <> nil then
ini.Free;
end;
end;
procedure WriteSetting(AFileName: String; ADataType: Integer;
ASection, AIdent: String; AValue: Variant; ADirPath: String = '');
var
ini: TIniFile;
DirPath: String;
begin
try
DirPath := ADirPath;
if DirPath = '' then
{$if Defined(ES_GRAPH_SC)}
DirPath := ExeDir + '\';
{$else}
DirPath := extractfilepath(paramstr(0));
{$ifend}
ini := TIniFile.Create(DirPath + AFileName);
case ADataType of
dtBoolean:
ini.WriteBool(ASection, AIdent, AValue);
dtFloat:
ini.WriteFloat(ASection, AIdent, AValue);
dtInteger:
ini.WriteInteger(ASection, AIdent, AValue);
dtString:
ini.WriteString(ASection, AIdent, AValue);
end;
FreeAndNil(ini);
except
on E: Exception do AddExceptionToLog('WriteSetting: '+E.Message);
end;
end;
procedure WriteSettingMemIni(const AFileName: String; ADataType: Integer;
const ASection, AIdent: String; AValue: Variant);
var
ini: TMemIniFile;
begin
try
ini := TMemIniFile.Create(AFileName);
case ADataType of
dtBoolean:
ini.WriteBool(ASection, AIdent, AValue);
dtFloat:
ini.WriteFloat(ASection, AIdent, AValue);
dtInteger:
ini.WriteInteger(ASection, AIdent, AValue);
dtString:
ini.WriteString(ASection, AIdent, AValue);
end;
ini.UpdateFile;
FreeAndNil(ini);
except
on E: Exception do AddExceptionToLog('WriteSettingMemIni: '+E.Message);
end;
end;
// #############################################################################
function ReadDBPath(AGDBMode: TDBKind): String;
begin
Result := '';
case AGDBMode of
bkNormBase:
Result := ReadSetting(fnSCSIniFile, dtString, scNormBase, idtPath, '');
bkProjectManager:
Result := ReadSetting(fnSCSIniFile, dtString, scProjMan, idtPath, '');
end;
end;
function ReadPnAdditionRestored(AGDBMode: TDBKind): Boolean;
begin
Result := true;
case AGDBMode of
bkNormBase:
Result := ReadSetting(fnSCSIniFile, dtBoolean, scNormBase, idtPnAdditionRestored, true);
bkProjectManager:
Result := ReadSetting(fnSCSIniFile, dtBoolean, scProjMan, idtPnAdditionRestored, true);
end;
end;
function ReadLastNBDir: Integer;
begin
Result := 0;
Result := ReadSetting(fnSCSIniFile, dtInteger, scNormBase, idtLastNBDir, 0);
end;
function ReadDefaultIDCompon(AIsLine: Integer): Integer;
begin
Result := 0;
case AIsLine of
biFalse:
Result := ReadSetting(fnSCSIniFile, dtInteger, scNormBase, idtDefaultNoLineCompon, 0);
biTrue:
Result := ReadSetting(fnSCSIniFile, dtInteger, scNormBase, idtDefaultLineCompon, 0);
end;
end;
function ReadDefaultIDCorkCompon: Integer;
begin
Result := -1;
Result := ReadSetting(fnSCSIniFile, dtInteger, scNormBase, idtDefaultCorkCompon, 0);
end;
function ReadDefaultIDTjoinCompon: Integer;
begin
Result := -1;
Result := ReadSetting(fnSCSIniFile, dtInteger, scNormBase, idtDefaultTjoinCompon, 0);
end;
function ReadNDS: Double;
begin
Result := 20;
Result := ReadSetting(fnSCSIniFile, dtFloat, scNormBase, idtNDS, 20);
end;
function ReadNBDisabeEdit(AGDBMode: TDBKind): Boolean;
begin
Result := false;
case AGDBMode of
bkNormBase:
Result := ReadSetting(fnSCSIniFile, dtBoolean, scNormBase, idtDisableEdit, false);
bkProjectManager:
Result := ReadSetting(fnSCSIniFile, dtBoolean, scProjMan, idtDisableEdit, false);
end;
end;
{
function ReadIsObjectIndexing: Boolean;
begin
Result := true;
Result := ReadSetting(dtBoolean, scNormBase, idtIsObjectIndexing, true);
end;
}
function ReadIsAdministration: Boolean;
begin
Result := false;
Result := ReadSetting(fnSCSIniFile, dtBoolean, scNormBase, idtIsAdministration, false);
end;
{
function ReadReserveLength: Double;
begin
Result := 0.5;
Result := ReadSetting(dtFloat, scNormBase, idtReserveLength, 0.5);
end;
}
{
function ReadAccountReserveLength: Boolean;
begin
Result := false;
Result := ReadSetting(dtBoolean, scNormBase, idtAccountReserveLength, false);
end;
}
{
function ReadAutoInsertingCompons: Boolean;
begin
Result := true;
Result := ReadSetting(dtBoolean, scProjMan, idtAutoInsertingCompons, true);
end;
}
function ReadDefNewItemType: Integer;
begin
Result := 0;
Result := ReadSetting(fnSCSIniFile, dtInteger, scProjMan, idtDefNewItemType, 0);
end;
function ReadDefCheckState: Boolean;
begin
Result := true;
Result := ReadSetting(fnSCSIniFile, dtBoolean, scProjMan, idtDefCheckState, true);
end;
function ReadSavedIDList: Integer;
begin
Result := 0;
Result := ReadSetting(fnSCSIniFile, dtInteger, scProjMan, idtSavedList, 0);
end;
function ReadSavedIDProject: Integer;
begin
Result := 0;
Result := ReadSetting(fnSCSIniFile, dtInteger, scProjMan, idtSavedProject, 0);
end;
function ReadUpdatePath: String;
begin
Result := ReadSetting(fnUpdateIni, dtString, scUpdateParams, idtUpdatePath, '');
if Result <> '' then
{$if Defined(ES_GRAPH_SC)}
Result := ExeDir + '\' + Result;
{$else}
Result := extractfilepath(paramstr(0)) + Result;
{$ifend}
end;
procedure WritePnAdditionRestored(AGDBMode: TDBKind; ARestored: Boolean);
begin
case AGDBMode of
bkNormBase:
WriteSetting(fnSCSIniFile, dtBoolean, scNormBase, idtPnAdditionRestored, ARestored);
bkProjectManager:
WriteSetting(fnSCSIniFile, dtBoolean, scProjMan, idtPnAdditionRestored, ARestored);
end;
end;
procedure WriteLastNBDir(AGDBMode: TDBKind; ALastNBDir: Integer);
begin
if AGDBMode = bkNormBase then
WriteSetting(fnSCSIniFile, dtBoolean, scNormBase, idtLastNBDir, ALastNBDir);
end;
procedure WriteUpdatePath(AUpdatePath: String; ADirPath: String = '');
begin
WriteSetting(fnUpdateIni, dtString, scUpdateParams, idtUpdatePath, AUpdatePath, ADirPath);
end;
end.