J'ai une dll qui contient une variable exportée que je dois initialiser.
Quelqu'un sait-il comment faire ?
Merci
J'ai une dll qui contient une variable exportée que je dois initialiser.
Quelqu'un sait-il comment faire ?
Merci
Il y a plusieurs démarches.
Si la variable n'a à être initialisée qu'au démarrage, il suffit d'utiliser une syntaxe du type :
Il est ausi possible d'effectuer des initialisations entre le "begin" et le "end." de la dll.
Code : Sélectionner tout - Visualiser dans une fenêtre à part var I : Integer = 324;
Sinon, et sans que ce soit exclusif, il faut définir une fonction d'affectation.
Voilà un code de test pour la dll :
Et un exemple de code à insérer dans l'unité de la fiche, pour l'utilisation (fiche avec un bouton Button1).
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 library DllExportVariable; uses SysUtils, Classes; {$R *.res} var I : Integer; function GetValue : Integer;stdcall; begin Result := I; end; procedure SetValue(AValue : Integer);stdcall; begin I := AValue; end; exports GetValue,SetValue; begin I := 324; end.
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 implementation {$R *.dfm} function GetValue : Integer; stdcall; external 'DllExportVariable.dll' name 'GetValue'; procedure SetValue(AValue : Integer); stdcall; external 'DllExportVariable.dll' name 'SetValue'; procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(IntToStr(GetValue)); SetValue(-3251); ShowMessage(IntToStr(GetValue)); end; end.
Je ne peux pas toucher à la dll car elle est fournie avec un matériel.
Je sais juste qu'elle contient une variable de type booléen que je dois absolument mettre à true (elle est à false par défaut) pour utiliser certaines fonctionnalités de mon matériel.
Donc une autre idée ?
Et dans la doc de la dll, il n'y a rien qui explique l'état de cette variable?
S'il n'y a pas de procédure exportée pour initialiser ces variables, aucune chance. Delphi ou tout autres systèmes de développement.
Récupérer la liste des procédures et fonctions n'est pas compliqué avec Delphi, il suffit de charger la DLL avec LoadLibrary et d'afficher les modules chargés pour avoir une liste exhaustives des fonctions exportées. Mais les paramètres à passer seront toujours manquants.
Comme l'a dit CapJack, seule la doc peut t'aider.
Partager