root / UFLoader.pas
Historique | Voir | Annoter | Télécharger (3,863 ko)
1 |
unit UFLoader;
|
---|---|
2 |
|
3 |
interface
|
4 |
|
5 |
uses
|
6 |
Windows, Forms, Classes, Controls, ComCtrls; |
7 |
|
8 |
type
|
9 |
TFLoader = class(TForm)
|
10 |
PBLoader: TProgressBar; |
11 |
private
|
12 |
{ D?clarations priv?es }
|
13 |
public
|
14 |
{ D?clarations publiques }
|
15 |
procedure Init;
|
16 |
end;
|
17 |
|
18 |
var
|
19 |
FLoader: TFLoader; |
20 |
|
21 |
implementation
|
22 |
|
23 |
uses
|
24 |
Dialogs, SysUtils, gnugettext, UVariables, UStrings, UInit, UUtil, UFIntro, |
25 |
UFLicense; |
26 |
|
27 |
{$R *.dfm}
|
28 |
|
29 |
procedure TFLoader.Init;
|
30 |
var
|
31 |
FileName: String;
|
32 |
VolumeSerialNumber: String;
|
33 |
Ok: Boolean; |
34 |
s: String;
|
35 |
begin
|
36 |
if Screen.Fonts.IndexOf('Arial Unicode MS') <> -1 |
37 |
then
|
38 |
Font.Name := 'Arial Unicode MS';
|
39 |
// Langue
|
40 |
UseLanguage(LanguageCode); |
41 |
TranslateComponent(Self); |
42 |
if ParamCount > 1 |
43 |
then // Nombre de param?tres incorrect |
44 |
MessageDlg(Format(MsgParamCount, [ParamCount, ParamStr(0), ExtractFileName(Application.ExeName)]), mtError, [mbOk], 0); |
45 |
PBLoader.StepIt; |
46 |
// Licence
|
47 |
InitLicense; |
48 |
LoadLicense; |
49 |
if (MajorVersion > 9) |
50 |
or (MinorVersion > 9) |
51 |
or (ReleaseVersion > 9) |
52 |
or (BuildVersion > 9) |
53 |
then // Num?ro de version incorrect |
54 |
begin
|
55 |
MessageDlg(Format(StrVersion, [MajorVersion, MinorVersion, ReleaseVersion, BuildVersion]), mtError, [mbOk], 0);
|
56 |
Application.Terminate; |
57 |
Exit; |
58 |
end;
|
59 |
if ((LicenseType = 1) or (LicenseType = 2)) and (StrToInt(FormatDateTime('yyyymmdd', Date)) > StrToInt(Copy(FinalDate, 7, 4) + Copy(FinalDate, 4, 2) + Copy(FinalDate, 1, 2))) |
60 |
then // Date limite d?pass?e |
61 |
MessageDlg(MsgFinalDate, mtWarning, [mbOk], 0);
|
62 |
if (LicenseType = 2) and (DriveType(Drive) <> DRIVE_FIXED) |
63 |
then // La version compl?te doit ?tre install?e sur un disque fixe |
64 |
MessageDlg(MsgFixedDrive, mtWarning, [mbOk], 0);
|
65 |
VolumeSerialNumber := BdRReadString('\Software\InraPorc\License', 'VolumeSerialNumber', Volume); |
66 |
if ((LicenseType = 1) or (LicenseType = 2)) and (Volume <> VolumeSerialNumber) |
67 |
then // Changement de disque |
68 |
MessageDlg(MsgDiskChanged, mtWarning, [mbOk], 0);
|
69 |
// Aide
|
70 |
if Copy(LanguageCode, 1, 2) = 'fr' |
71 |
then // Fran?ais |
72 |
FileName := ChangeFileExt(Application.ExeName, '_fr.chm')
|
73 |
else // Anglais |
74 |
FileName := ChangeFileExt(Application.ExeName, '_en.chm');
|
75 |
if FileExists(FileName)
|
76 |
then
|
77 |
Application.HelpFile := FileName; |
78 |
// Contrat de licence
|
79 |
case LicenseType of |
80 |
1: s := 'AcceptEducation'; |
81 |
2: s := 'AcceptComplete'; |
82 |
else s := 'AcceptEvaluation'; |
83 |
end;
|
84 |
if not BdRReadBoolean('\Software\InraPorc', s, False) |
85 |
then
|
86 |
begin
|
87 |
FIntro := TFIntro.Create(Self); |
88 |
Ok := FIntro.ShowModal = mrOk; |
89 |
FIntro.Release; |
90 |
if Ok
|
91 |
then // Accepter |
92 |
BdRWriteBoolean('\Software\InraPorc', s, True)
|
93 |
else // Refuser |
94 |
begin
|
95 |
Application.Terminate; |
96 |
Exit; |
97 |
end;
|
98 |
end;
|
99 |
PBLoader.StepIt; |
100 |
// Configuration
|
101 |
LoadConfig; |
102 |
// Donn?es
|
103 |
if ParamCount = 1 |
104 |
then // R?pertoire pass? en param?tre |
105 |
if DirectoryExists(ParamStr(1)) |
106 |
then // R?pertoire enregistr? dans la configuration |
107 |
DataFolderExists := SetCurrentDir(ParamStr(1))
|
108 |
else
|
109 |
begin
|
110 |
MessageDlg(Format(MsgDataDirectory, [ParamStr(1)]), mtError, [mbOk], 0); |
111 |
DataFolderExists := False; |
112 |
end
|
113 |
else // R?pertoire par d?faut (Configuration) |
114 |
if DirectoryExists(Folder)
|
115 |
then // R?pertoire enregistr? dans la configuration |
116 |
DataFolderExists := SetCurrentDir(Folder) |
117 |
else
|
118 |
begin
|
119 |
MessageDlg(Format(MsgDataDirectory, [Folder]), mtError, [mbOk], 0);
|
120 |
DataFolderExists := False; |
121 |
end;
|
122 |
PBLoader.StepIt; |
123 |
InitData; |
124 |
PBLoader.StepIt; |
125 |
LoadData; |
126 |
PBLoader.StepIt; |
127 |
if ((LicenseType = 0) or (LicenseType = 1)) and TooMuchRecords |
128 |
then // Trop d'enregistrements |
129 |
MessageDlg(MsgTooMuchRecords, mtWarning, [mbOk], 0);
|
130 |
if not IsComplete and not IsEducation |
131 |
then
|
132 |
begin
|
133 |
FLicense := TFLicense.Create(Self); |
134 |
FLicense.ShowModal; |
135 |
FLicense.Release; |
136 |
end;
|
137 |
end;
|
138 |
|
139 |
end.
|