* *
* *
Electronique
+ Arduino
+ Bus I2C
+ Divers
+ Game Boy Advance
+ Robotique
+ Z80
Informatique
+ Commande numérique
 -  Les DLL
+ Mon Guppy
+ divers
Mathématiques
Astronomie
Webmaster - Infos
Ecrire à Grosse Christophe  Webmestre
Ajouter aux favoris  Favoris
Recommander ce site à un ami  Recommander
Version mobile   Version mobile
Recherche




Préférences

 Nombre de membres 30 membres


Utilisateurs en ligne

( personne )
Création de DLL avec Delphi

Pourquoi Delphi 1.0 ?

Pourquoi ai-je choisi Delphi 1.0 pour illuster la création d'une DLL ? Tout simplement parce que Delphi 1.0 est disponible licence comprise pour la modique somme de 68F ! ( Voir les numéros Hors Séries de Presque Offert ... ). De plus le language Delphi est un language visuel évènementiel tout a fait comparable en ergonomie et en fonctionalités à Visual Basic avec l'avantage de ne pas avoir les défault de celui-ci :

- Quasi compatibilité avec le language Pascal ( Adaptation de mes sources Turbo-Pascal trés rapide )
- Possède une instruction d'accès aux ports d'entrées/sorties ( port[n°port] !!! Ne marche pas sous Win95/98 pour accéder au port // )
- Permet l'ajout de composants VCL,VBX ... pour étendre les possibilités du language à l'infinie. - Compilation du code en 16 Bits soutenu par Windows 3.1 ( et oui papy fait de la résistance ! ), Windows 3.11, Windows 95 et 98
- Permet de compiler des programmes sous forme de DLL ...

Il est fort probable que la méthode décrite ci après reste valable pour les versions plus récentes de Delphi.

Une DLL ! pour faire quoi ?

Ce didactitiel détaille la création d'une DLL permettant l'accés au ports de l'ordinateur ( y compris le port // ) fonctionnant aussi bien sous Windows 3.1 que Win 95 et 98. Cette DLL donnera accés au fonctions suivantes :

Procedure OUT(Adresse du port;Valeur a écrire sur ce port)
Function INP(Adresse du port que l'on désire lire) qui renvoie l'octet présent sur le port.

Création de la DLL... pas à pas

Lancer Delphi puis créer un nouveau projet par la commande Fichier puis Nouveau Projet.

delphi1.gif
Une vue de l'interface de Delphi 1.0 après l'ouverture d'un nouveau projet

La Dll ne comportant pas de feuille visible il faut tout d'abord supprimer la feuille nommée FORM1 du projet ainsi que l'unité UNIT1.PAS qui lui est associée. Pour cela utilisez la commande Voir puis Gestionnaire de projet pour faire apparaitre la boite de dialogue ci dessous.

delphi2.gif
Boite de dialogue "Gestionnaire de projet"

Dans celle-ci cliquer sur Unit1 pour sélectionner la ligne puis sur le bouton supprimer. Voila le projet ne comporte plus aucune fenêtre et unité associée. Avant de continuer, il est impératif de sauver le projet afin de lui attribuer son nom définitif. La commande Fichier puis Enregistrez projet sous... ouvre la boite de sauvegarde.Sauvegarder le projet sous son nom définit IO.DPR. Il est alors temps de modifier le source du projet par la commandes Voir puis Source du projet pour faire apparaitre la fenêtre contenant "le source" du projet.

 delphi3.gif
Fenêtre contenant "le source" du projet

Modifier le source comme le montre la copie d'écran ci dessous.

delphi4.gif
"Le source" du projet modifié

La première ligne Library io permet d'indiquer au compilateur qu'il doit produire un fichier IO.DLL au lieu d'un simple EXE. La clause Exports permet de préciser les fonctions et procédures qui seront rendue disponibles par la DLL. ( Ici INP et OUT ). La clause uses permet de préciser dans quel fichier unité se trouve ces procédures et fonctions. Celle-ci se trouve dans un fichier nommé IOUNIT.PAS qu'il nous faut maintenant créer par la commande Fichier puis Nouvelle unité.

 delphi5.gif
Une unité a été ajouté au projet

Afin de renommer cette unité il convient d'utiliser la commande Fichier puis Enregistrer sous.... Une boite de sauvegarde apparait. Changer UNIT1.PAS en IOUNIT.PAS puis valider la sauvegarde. Modifier IOUNIT.PAS comme le montre la copie d'écran ci-dessous.

 delphi6.gif
L'implémentation des routines INP et OUT dans IOUNIT.PAS

Notez qu'il est impossible d'exporter directement des routines écrites en assembleur ! ( les clauses Export et Assembler ne pouvant pas coexister sur la même ligne ).Mais une simple astuce de programmation permet de contourner cette limite : il suffit de créer deux fonction/procédures intermédiaire écrite en assembleur ( Procedure aout et function ainp ). Les procédures out et inp appelant celle-ci peuvent être exporté avec la clause Export Cet article n'étant pas une initiation au language pascal, je ne m'attarderais pas sur le programme ci-dessus qui ne fait rien d'autre qu'accéder aux port de l'ordinateur directement avec les instructions assembleur correspondantes. Des livres existes pour cela et l'aide en ligne de Delphi est trés bien faite ... Sachez que les différents manuels de Delphi 1.0 sont livrés sur le CD-ROM en format PDF librement imprimable.

Pour finir, revenez au source du projet IO.DPR ( cliquer sur l'onglet correspondant ... ) puis supprimer la ligne Forms, comme le montre l'écran ci dessous.

 delphi7.gif
Supprimer la ligne indiquée

Il ne vous reste plus qu'a sauver le tout par Fichier puis Enregistrer Projet puis à compiler par Compiler puis Compiler. Vous voila en poscession d'une magnifique DLL faisant 2816 Octet et répondant au doux nom de IO.DLL

Pour ceux qui ne disposerait pas de Delphi et que la DLL interresse tout de même voici IO.DLL

Pour apprendre a utiliser cette DLL Sous Delphi
Pour apprendre a utiliser cette DLL sous Visual Basic


Date de création : 28/10/2005 @ 18:04
Dernière modification : 31/01/2008 @ 07:51
Catégorie : Les DLL
Page lue 9570 fois


Prévisualiser la page Prévisualiser la page     Imprimer la page Imprimer la page

react.gifRéactions à cet article


Personne n'a encore laissé de commentaire.
Soyez donc le premier !


^ Haut ^

GuppY - http://www.freeguppy.org/    Site créé avec GuppY v4.5.8 © 2004-2005 - Licence Libre CeCILL   GuppY - http://www.freeguppy.org/

Document généré en 0.7 seconde