-
Notifications
You must be signed in to change notification settings - Fork 0
/
uConst.pas
160 lines (127 loc) · 4.08 KB
/
uConst.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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
unit uConst;
interface
uses
Windows, Classes, SysUtils, StrUtils, // dea.Tools,
Cromis.SimpleLog, PropFilerEh, PropStorageEh;
const
main_log = 'log.txt';
arrow_down = char(8595); // '↓';
arrow_up = char(8593);
hand_up = '👍'; { ручка вверх }
CR = #13#10;
var
utc_offset: TDateTime = 2 / 24; // UTC минус локальное время (автоопределение OnCreate)
eps: Double = 0.0000000001;
procedure Log(const s: string); overload;
procedure Log(Param: Integer); overload;
procedure Log(Param: Double); overload;
procedure Log(BoolParam: Boolean); overload;
procedure Log(const FormatStr: string; Args: array of const); overload;
procedure Log(const s: string; IntParam: Integer); overload;
procedure Log(const s: string; BoolParam: Boolean); overload;
procedure Log(const s: string; FloatParam: Double); overload;
procedure LogTime; // запоминает текущее время
// выводит в лог истекшее время с момента запоминания, плюс указанная строка
procedure LogTimeEnd; overload;
procedure LogTimeEnd(const FormatStr: string; Args: array of const); overload;
procedure Err(s: string = '');
function ff(value: Double): string; // форматирование цен и объемов
function ffp(value: Double): string; // форматирование процентов
function WorkingPath: string;
function NormalDir(const DirName: string): string;
procedure SetDefStorage;
const
_Italic = #1;
_Bold = #2;
_Highlight = #3;
_AltFont = #4;
_Underline = #21;
implementation
procedure Log(const s: string); overload;
begin
SimpleLog.LogInfo('log', s);
end;
procedure Log(Param: Integer); overload;
begin
SimpleLog.LogInfo('log', IntToStr(Param));
end;
procedure Log(Param: Double); overload;
begin
SimpleLog.LogInfo('log', FormatFloat('0.########', Param));
end;
procedure Log(BoolParam: Boolean); overload;
begin
SimpleLog.LogInfo('log', IfThen(BoolParam, 'Y', 'N'));
end;
procedure Log(const s: string; IntParam: Integer);
begin
SimpleLog.LogInfo('log', s + ': ' + IntToStr(IntParam));
end;
procedure Log(const s: string; BoolParam: Boolean); overload;
begin
SimpleLog.LogInfo('log', s + ': ' + IfThen(BoolParam, 'Y', 'N'));
end;
procedure Log(const s: string; FloatParam: Double); overload;
begin
SimpleLog.LogInfo('log', s + ': ' + FloatToStr(FloatParam));
end;
procedure Log(const FormatStr: string; Args: array of const); overload;
var
s: string;
begin
s := Format(FormatStr, Args);
SimpleLog.LogInfo('log', s);
end;
procedure Err(s: string = '');
begin
SimpleLog.LogError('log', s);
end;
var
_LogTime: Cardinal = 0;
procedure LogTime; // запоминает текущее время
begin
_LogTime := GettickCount;
end;
// выводит в лог истекшее время с момента запоминания, плюс указанная строка
procedure LogTimeEnd(const FormatStr: string; Args: array of const);
var
s: string;
begin
s := Format(FormatStr, Args);
SimpleLog.LogInfo('log', s + ' : ticks = ' + (GettickCount - _LogTime).ToString);
_LogTime := 0;
end;
procedure LogTimeEnd;
begin
SimpleLog.LogInfo('log', ': ticks = ' + (GettickCount - _LogTime).ToString);
_LogTime := 0;
end;
procedure SetDefStorage;
var
IniPropStorageMan1: TIniPropStorageManEh;
begin
IniPropStorageMan1 := TIniPropStorageManEh.Create(nil);
IniPropStorageMan1.IniFileName := ExtractFilepath(GetModuleName(0)) + 'settings.ini';
SetDefaultPropStorageManager(IniPropStorageMan1);
end;
function ff(value: Double): string;
begin
Result := FormatFloat('0.########', value);
end;
function ffp(value: Double): string;
begin
Result := FormatFloat('0.###', value) + ' %';
end;
function WorkingPath: string; // путь к программе (а не текущий путь)
begin
Result := ExtractFilepath(GetModuleName(0));
end;
function NormalDir(const DirName: string): string;
begin
Result := DirName;
if Result = '' then
exit;
if (Result[Length(Result)] <> '\') and (Result[Length(Result)] <> '/') then
Result := Result + '\';
end;
end.