Manuel §1.9    

DLL

Sisal permet d ’accéder à partir d ’un script ou d ’un synoptique à toutes fonctions déclarées dans une librairie dynamique " DLL " standard de Windows.

Il suffit de déclarer le prototype de chacune des fonctions de la DLL appelées à partir du script, en en-tête de fichier avant la déclaration Object ou Var. Comme les paramètres des fonctions des Dlls sont typés, il est nécessaire de déclarer pour chaque fonction le type des paramètres attendus et le type rendu par la fonction. Le nombre de paramètres est limité à huit (8).

Declare Function MaFonction Lib " MaDll.dll " [Alias " NomDansLaDll "] [( type {, type})] [As Type];

Type

Type de paramètre

Integer

Entier

Double

Flottant [1]

Date

Datation complete

String

Chaine de caractère

Handle

Identificateur d ’objet Windows

Par défaut les paramètres sont transmis par valeur, ils peuvent être transmis par adresse en préfixant le champ type par un &.

Par exemple pour déclarer les fonctions permettant de dialoguer avec une gestion de production centrale, on pourrait utiliser les trois définitions suivantes.

Declare Function GPAOInit Lib “GPAO.dll” Alias  “GlobalInit”;
Declare Function ChargeLot Lib “GPAO.dll” Alias “OF”  ( Integer) As String;
Declare Function EnregistreLot Lib “GPAO.dll” Alias  “Record” ( Integer, String, Date, Integer) As Int;

Bien entendu le développement de la Dll sera réalisé dans un autre environnement que Sisal, par exemple Visual C++ ou Delphi.

Et dans le script nous pourrons avoir

On do begin
// Traitement initial
GPAOInit() ;
End
On Dechargement .Signal do begin
EnregistreLot( NumLot, Reference, Now(), Nombre) ;
end

[1] Les doubles ne peuvent être transmis que par adresse, donc la Dll attend dans ce cas des "double*". Dans le cas ou on transmet par valeur, Sisal transforme automatiquement le double en float.