-
Notifications
You must be signed in to change notification settings - Fork 1
/
uusualinapp.pas
128 lines (100 loc) · 3.41 KB
/
uusualinapp.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
unit uusualinapp;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs,
FileUtil;
type
{ TUsualInApp }
TUsualInApp = class(TComponent)
private
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
SystemConfigDir, UserConfigDir, SystemConfigFile, UserConfigFile,
UserConfigFileSubdir, UserDataDir, UserDbDir, UserFirebirdFilename: String;
ApplicationName: String;
TmpDir: String;
//TmpDir: PChar;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure SetApp;
procedure SetConfigPaths;
published
{ Published declarations }
function SetTemporaries(): String; // Needs an explicit call!
function GetTmpFilename(FileNamePrefix: String; DestDir: String = ''): String;
end;
procedure Register;
implementation
procedure Register;
begin
//RegisterComponents('Netsika',[TUsualInApp]);
RegisterComponents('System',[TUsualInApp]);
end;
{ TUsualInApp }
constructor TUsualInApp.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
TmpDir := '';
SetConfigPaths;
SetApp;
end;
destructor TUsualInApp.Destroy;
begin
if (TmpDir <> '') and DirectoryExists(TmpDir) then
// if DeleteDirectory(TmpDir, True) then RemoveDirUTF8(TmpDir);
if DeleteDirectory(TmpDir, True) then RemoveDir(TmpDir);
inherited Destroy;
end;
procedure TUsualInApp.SetApp;
begin
// ApplicationName := ChangeFileExt(ExtractFileName(Paramstr(0)),'');
ApplicationName := OnGetApplicationName();
end;
procedure TUsualInApp.SetConfigPaths;
begin
SystemConfigDir := GetAppConfigDir(true);
UserConfigDir := GetAppConfigDir(false);
SystemConfigFile := GetAppConfigFile(true);
UserConfigFile := GetAppConfigFile(false);
//UserConfigFile := UserConfigDir + ApplicationName + '.cfg';
// Forced:
//UserConfigFileSubdir := UserConfigDir + ApplicationName + '.cfg';
UserConfigFileSubdir := GetAppConfigFile(false, true);
// UserFirebirdFilename := UserConfigDir + ApplicationName + '.fdb';
//UserDataDir := GetUserDir + '.' + ApplicationName + PathDelim + 'data' + PathDelim;
UserDataDir := GetAppConfigDir(false) + 'datas';
//UserDbDir := GetUserDir + '.' + ApplicationName + PathDelim + 'db' + PathDelim;
UserDbDir := UserDataDir + PathDelim + 'db';
//UserFirebirdFilename := UserDataDir + ApplicationName + '.fdb';
UserFirebirdFilename := UserDbDir + ApplicationName + '.fdb';
end;
function TUsualInApp.SetTemporaries(): String;
//function TUsualInApp.SetTemporaries(): PChar;
begin
TmpDir := GetTempFilename(GetTempDir(False), 'ntk') + PathDelim;
//TmpDir := PChar(GetTempFilename(GetTempDir(False), 'vdk') + PathDelim);
//TmpDir := TmpDirRoot + TmpSubDirName + PathDelim;
if not ForceDirectories(TmpDir) then
ShowMessage('ERROR: Couldn''t create the temporary directory!');
Result := TmpDir;
end;
function TUsualInApp.GetTmpFilename(FileNamePrefix: String; DestDir: String
): String;
var
TmpDirStr, FilePrefix: String;
begin
TmpDirStr := '';
if (FileNamePrefix = '') then FilePrefix := 'ntk' else FilePrefix := FileNamePrefix;
//if TmpDir = '' then TmpDirStr := GetTempDir(False)
// else TmpDirStr := TmpDir;
if DestDir = '' then begin
if TmpDir = '' then TmpDirStr := GetTempDir(False)
else TmpDirStr := TmpDir;
end else TmpDirStr := DestDir;
Result := GetTempFilename(TmpDirStr, FilePrefix);
end;
end.