-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ProgramSetting.pas
108 lines (83 loc) · 2.39 KB
/
ProgramSetting.pas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
unit ProgramSetting;
interface
uses
system.IOUtils,
system.SysUtils, system.Types, system.UITypes, system.Classes,
system.Variants, VCL.Controls,
XsuperObject;
type
TPrgSetting = Class
private
{ private declarations }
protected
{ protected declarations }
public
{ public declarations }
Server: string;
User: string;
Password: string;
OSAuthent: boolean;
LoginTimeOut: integer;
constructor Create();
function GetDefaultSettingsFilename(): string;
function GetSettingsFolder(): string;
procedure LoadFromFile(AFileName: string = '');
procedure SaveToFile(AFileName: string = '');
{ published declarations }
end;
const
CONNECTIONTIMEOUT = 20; // default is 0 - infinate...
var
Settings: TPrgSetting;
implementation
constructor TPrgSetting.Create();
begin
Server := '';
User := '';
Password := '';
OSAuthent := false;
LoginTimeOut := CONNECTIONTIMEOUT;
{
ForceDirectories creates a new directory as specified in Dir,
which must be a fully-qualified path name. If the directories given in
the path do not yet exist, ForceDirectories attempts to create them
}
ForceDirectories(Settings.GetSettingsFolder());
end;
function TPrgSetting.GetDefaultSettingsFilename(): string;
begin
result := TPath.Combine(GetSettingsFolder(), 'initMember.json');
end;
function TPrgSetting.GetSettingsFolder(): string;
begin
// result := TPath.Combine(TPath.GetHomePath(), 'MyProg');
// result := ExtractFilePath(ParamStr(0));
{$IFDEF MACOS}
Result := TPath.Combine(TPath.GetLibraryPath(), 'Artanemus\SWimClubMeet');
{$ELSE}
// GETHOMEPATH = C:Users\<username>\AppData\Roaming (WINDOWS)
// Should also work on ANDROID.
Result := TPath.Combine(TPath.GetHomePath(), 'Artanemus\SwimClubMeet\Member');
{$ENDIF}
end;
procedure TPrgSetting.LoadFromFile(AFileName: string = '');
var
Json: string;
begin
if AFileName = '' then
AFileName := GetDefaultSettingsFilename();
if not FileExists(AFileName) then
exit;
Json := TFile.ReadAllText(AFileName, TEncoding.UTF8);
AssignFromJSON(Json); // magic method from XSuperObject's helper
end;
procedure TPrgSetting.SaveToFile(AFileName: string = '');
var
Json: string;
begin
if AFileName = '' then
AFileName := GetDefaultSettingsFilename();
Json := AsJSON(True); // magic method from XSuperObject's helper too
TFile.WriteAllText(AFileName, Json, TEncoding.UTF8);
end;
end.