Bonjour,

J'ai soucis avec une application et un package.

Voici le code de mon applicatif principal :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
unit MPrincipale;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, Menus, ActnPopup, ImgList, StdCtrls, Buttons, IniFiles,
  MGSurf;
 
type
  TFPrincipale = class(TForm)
    TrayIcon1: TTrayIcon;
    PopupActionBar1: TPopupActionBar;
    ImageList1: TImageList;
    Quitter1: TMenuItem;
    Aproposde1: TMenuItem;
    N1: TMenuItem;
    Shape1: TShape;
    LNom: TLabel;
    LVersion: TLabel;
    Image1: TImage;
    SBOK: TSpeedButton;
    LBModules: TListBox;
    procedure FormCreate(Sender: TObject);
    procedure Quitter1Click(Sender: TObject);
    procedure SBOKClick(Sender: TObject);
    procedure Aproposde1Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
     procedure Log(Information:string);
  end;
 
var
     FPrincipale         : TFPrincipale;
     GCenterAutonome     : boolean;
     GSurfHandle         : HMODULE;
     GSurfClass          : TPersistentClass;
     GSurfModule         : TGSurf;
 
implementation
 
{$R *.dfm}
 
procedure TFPrincipale.Log(Information:string);
var
     FichierLog     : TextFile;
     FichierNom     : string;
begin
     if not DirectoryExists(ExtractFilePath(Application.ExeName)+'Logs') then CreateDir(ExtractFilePath(Application.ExeName)+'Logs');
     FichierNom := ExtractFilePath(Application.ExeName) + 'Logs\' + FormatDateTime('yyyy-mm-dd".txt"', Now);
     AssignFile(FichierLog,FichierNom);
     if not FileExists(FichierNom) then
          Rewrite(FichierLog)
     else
          Append(FichierLog);
     WriteLn(FichierLog,FormatDateTime('hh:nn:ss',Now) + ' -> ' + Information);
     CloseFile(FichierLog);
end;
 
procedure TFPrincipale.Quitter1Click(Sender: TObject);
begin
     try
          Application.Terminate;
     except
          on E : Exception do
          begin
               Log(E.Message);
               MessageDlg(E.Message, mtError, [mbOK], 0);
               Application.Terminate;
          end;
     end;
end;
 
procedure TFPrincipale.SBOKClick(Sender: TObject);
begin
     try
          Visible := false;
     except
          on E : Exception do
          begin
               Log(E.Message);
               MessageDlg(E.Message, mtError, [mbOK], 0);
          end;
     end;
end;
 
procedure TFPrincipale.Aproposde1Click(Sender: TObject);
begin
     try
          Visible := true;
     except
          on E : Exception do
          begin
               Log(E.Message);
               MessageDlg(E.Message, mtError, [mbOK], 0);
          end;
     end;
end;
 
procedure TFPrincipale.FormCreate(Sender: TObject);
var
     Ini            : TIniFile;
begin
     try
          // Lecture du fichier GCenter.ini
          Ini := TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini'));
               GCenterAutonome := Ini.ReadBool('GCenter','Autonome',true);
          Ini.Free;
 
          // Chargement du module GSurf
          GSurfHandle := LoadPackage(ExtractFilePath(Application.ExeName) + 'Modules\GSurf.bpl');
          if GSurfHandle <> 0 then
          begin
               GSurfClass := GetClass('TGSurf');
               if GSurfClass <> nil then
               begin
                    GSurfModule := TComponentClass(GSurfClass).Create(Application) as TGSurf;
                    LBModules.Items.Add('GSurf : ' + GSurfModule.GSurfVersion);
               end;
          end;
 
          TrayIcon1.Visible := true;
     except
          on E : Exception do
          begin
               Log(E.Message);
               MessageDlg(E.Message, mtError, [mbOK], 0);
               Application.Terminate;
          end;
     end;
end;
 
procedure TFPrincipale.FormDestroy(Sender: TObject);
begin
     try
          if GSurfHandle <> 0 then UnloadPackage(GSurfHandle);
     except
          on E : Exception do
          begin
               Log(E.Message);
               MessageDlg(E.Message, mtError, [mbOK], 0);
               Application.Terminate;
          end;
     end;
end;
 
end.
Le code de mon package :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
unit MGSurf;
 
interface
 
uses
     Classes, GpHTTPProxy;
 
type
     TGSurf = class(TComponent)
          private
               GSurfHTTP      : TGpHttpProxy;
               GSurfHTTPS     : TGpHttpProxy;
          public
               GSurfVersion   : string;
               constructor Create(AOwner:TComponent);
     end;
 
implementation
 
constructor TGSurf.Create(AOwner:TComponent);
begin
     inherited Create(AOwner);
     GSurfVersion := '2007.19.01';
     GSurfHTTP := TGpHttpProxy.Create(AOwner);
     GSurfHTTPS := TGpHttpProxy.Create(AOwner);
end;
 
initialization
     RegisterClass(TGSurf);
 
finalization
     UnRegisterClass(TGSurf);
 
end.
Et mon erreur :
14:02:42 -> Une classe nommée TGSurf existe déjà
Comment dois-je faire ?

Merci,
ZiP