| Ma 1ère DLL | |
|
|
|
Auteur | Message |
---|
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Ma 1ère DLL Sam 7 Juil 2012 - 1:44 | |
| Salut tout le monde. Pour reprendre l’expression de ygeronimi, ça y est : j’ai « pondu » ma 1ere DLL. D’abord j’ai essayé de l’écrire en DELPHI 6 que je venais de télécharger récemment, mais ça n’a pas marché (j’y reviendrais surement), alors j’ai tenté en Free basic et j’ai REUSSI ! La DLL proprement dite s’appelle atn2 et permet de calculer la fonction atn2(x, y) qui n’est pas définie en PANORAMIC. Atn2(x, y) calcule l’Arc Tangente de y/x en tenant compte des signes de Y et de X. Elle est différente de la fonction atn(x) qui est présente en PANORAMIC. En plus de son utilité pratique (du point de vue mathématique), cette DLL a été, pour moi, un bon exercice de programmation. Voici le code en Free basic - Code:
-
' DLL atn2 en FreeBasic par Papydall ' calcul l'ArcTangente(y/x) en tenant compte des signes de X et de Y. ' Le résultat (en radians) appartient à l'un des 4 quadrants. ' compilez cette DLL ainsi : ' fbc atn2.bas -dll
extern "Windows-MS"
function atn2(byref x as double, byref y as double,byref resultat as double) as integer export ' Atn2 - Arc tangente de Y/X ' arc tangente de Y/X --> retourne les valeurs dans les 4 quadrants en radians dim pi as double dim result as double pi = 4*atn(1) If x = 0 then result = Sgn(y) * pi/2 Else If x > 0 then result = Atn(y / x) Else if x < 0 and y = 0 then result = atn(y / x) - sgn(x) * pi else result = Atn(y / x) + Sgn(y) * pi end if End if end if resultat = result return resultat
end function
end extern
compilez cette DLL ainsi : fbc atn2.bas –dll et voici comment on l’utilise en PANORAMIC - Code:
-
dim x,y,resultat ,i%,pi pi = 4*atn(1) x = int(rnd(100)-50) : y = int(rnd(100)-50) dll_on "atn2.dll" x = int(rnd(100)-50) : y = int(rnd(100)-50) i% = dll_call3("atn2",adr(x),adr(y),adr(resultat)) print "atn2(";x;",";y;") = ";resultat ;" radians = ";resultat*180/pi;" dégrés" dll_off
Pour ceux qui ne peuvent pas compiler la DLL, vous pouver la télécharger à partir de mon WEBDEV , dans le repertoire Mes DLL www.mydrive.chusername : panoramicien@papydall_panoramic password: panoramic123
Dernière édition par papydall le Sam 7 Juil 2012 - 17:58, édité 1 fois | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Ma 1ère DLL Sam 7 Juil 2012 - 1:49 | |
| Bravo ! Voilà une porte ouverte sur le monde magique des DLL, et je suis certain que tu ne la refermeras pas de si tôt !
T as chosi Frebasic, et c'est un bon choix, vu que Panoramic est appelé à se marier avec ce langage. Mais au fond, Delphi ou n'importe quel autre langage capable de produire des DLLs est utilisable: C, C++, Fortran, etc. | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Ma 1ère DLL Sam 7 Juil 2012 - 2:03 | |
| Je n’ai jamais écrit de programme en DELPHI, mais je programmais en Turbo Pascal. J’ai récemment téléchargé DELPHI 6, et comme il a la même syntaxe que Pascal ( ?), j’ai essayé de coder la DLL en question mais je n’ais pas arrivé à la compiler. D’ailleurs, j’ai juste survolé la documentation ; ma ça viendra. Je me mettrais à l’école de DELPHI, quand j’aurais un peu plus de temps libre. | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 7 Juil 2012 - 2:36 | |
| | |
|
| |
jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Ma 1ère DLL Sam 7 Juil 2012 - 9:54 | |
| Voici une solution possible en Delphi : - Code:
-
library atn2;
const PiDiv2 = Pi / 2.0 ; function ArcTan2(var Y, X, Atn2 : Double) : Integer; stdcall; var Theta : Double; begin if X = 0.0 then if Y = 0.0 then Atn2 := 0.0 else if Y > 0.0 then Atn2 := PiDiv2 else Atn2 := - PiDiv2 else begin { 4th/1st quadrant -Pi/2..Pi/2 } Theta := ArcTan(Y / X);
{ 2nd/3rd quadrants } if X < 0.0 then if Y >= 0.0 then Theta := Theta + Pi { 2nd quadrant: Pi/2..Pi } else Theta := Theta - Pi; { 3rd quadrant: -Pi..-Pi/2 } Atn2 := Theta; end; Result := 0; end;
exports ArcTan2; end.
Sauvegarder sous atn2.dpr puis compiler par : - Code:
-
dcc32 atn2.dpr
Exemple d'appel en Panoramic : - Code:
-
dim x, y, a, res%
x = 2 y = 1
dll_on "atn2.dll"
res% = dll_call3("ArcTan2", adr(y), adr(x), adr(a))
dll_off
print a print atn(0.5)
end
Note : FreeBASIC a déjà la fonction ATAN2. On peut donc l'appeler directement. | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Ma 1ère DLL Sam 7 Juil 2012 - 10:41 | |
| Merci jean-debord pour ton intervention.
J’ai voulu juste voir comment on écrit une DLL. La 1ère idée qui m’est venue était atn2. Je savais que cette fonction existe en Free Basic, mais j’ai voulu la coder moi-même pour voir le comment de la chose.
D’abord, je l’ai codée en Delphi (à peu près comme ton code). Comme je ne connaissais pas bien Delphi (mais je sais comment coder en Pascal) et n’ayant pas pris la peine de lire la documentation pour savoir comment on compile une DLL, je ne suis pas allé plus loin. Alors je me suis rabattu sur Free Basic. Le but ultime pour moi n’étais pas l’importance de la DLL en soit, mais le comment faire.
Je reprendrais cette DLL ou peut-être une autre, en Delphi, et je la compilerais comme tu m’as indiqué. Merci pour le tuyau.
@ygeronimi
Tant qu’on respire, on ne finit jamais avec l’école. Alors remets toi à l’école et amuse-toi bien. Peu importe quelle école, l’essentiel c’est de continuer à apprendre et on n’en finit jamais. Ce n’est pas beau ça ?
A+
| |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Ma 1ère DLL Sam 7 Juil 2012 - 11:22 | |
| Hourra ! J’ai réalisé ma DLL atn2 en DELPHI. @jean-debord Pour la compilation : En lançant dcc32, une fenêtre furtive apparait puis plus rien. J’ai compilé ma DLL par Projet Compiler atn2 et ça M A R C H E !!! | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| |
| |
jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Ma 1ère DLL Sam 7 Juil 2012 - 16:39 | |
| - papydall a écrit:
- :
En lançant dcc32, une fenêtre furtive apparait puis plus rien.
Il faut probablement ajouter le chemin du compilateur dcc32.exe dans le PATH, ou bien spécifier le chemin complet sur la ligne de commande. On peut bien sûr compiler depuis l'IDE, comme tu l'as fait. En tout cas bravo et bonne continuation avec les DLL | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Ma 1ère DLL Sam 7 Juil 2012 - 17:52 | |
| @jean_debord Merci pour tes encouragements @ygeronimi Ton meilleur prof et ami c’est Google ! Il te fournirait une quantité d’informations telle qu’une simple vie humaine est trop courte pour en venir à bout ! | |
|
| |
demenvil
Nombre de messages : 171 Age : 34 Localisation : France Marseille Date d'inscription : 30/06/2012
| Sujet: Re: Ma 1ère DLL Sam 7 Juil 2012 - 18:15 | |
| Super pour ta première DLL ! J'aimerai également en faire pour pas mal de besoin persos, pour pallier au limites de panoramic | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 7 Juil 2012 - 18:28 | |
| google...google.... heu...c'est pas toujours mon copain 90% c'est de l'anglais ( je te fais pas un dessin pour comprendre le langage technique ) 8% sont des gens qui parlent d'eux à la troisième personne et faut avoir fait les hautes écoles pour suivre reste 2% coincés à 1235698711658 ème page , celle que tu n'atteins jamais parceque tu fais un roupillon sur le clavier avant d'y être arrivé enfin bref , je vais aller pleurer 5 minutes sur google | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Ma 1ère DLL Sam 7 Juil 2012 - 19:08 | |
| Ygeronimi, ne soit pas trop attristé si tu n’as pas trouvé ton bonheur chez Google. Dis ce que tu cherches à apprendre et je te fournirais, moi ou quelqu’un d’autre, des liens vers des cours de tous genres et en FRANÇAIS. Moi aussi je ne suis pas doué in English, mais je me débrouille. Surtout ne pleure pas sur Google : souvent il est mon ami. | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 7 Juil 2012 - 20:04 | |
| C'est tout bête: la structuration les mots clé et leur avec def et eciture en gros un Panoramic mais avec les mots du langage freebasic Ce qui fait la force de Panoramic c'est la pédagogie de Jack ( sans oublier tous ceux qui nous aident régulièrement ) | |
|
| |
jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Ma 1ère DLL Dim 8 Juil 2012 - 8:06 | |
| - ygeronimi a écrit:
- Ce qui fait la force de Panoramic c'est la pédagogie de Jack ( sans oublier tous ceux qui nous aident régulièrement )
Tout à fait d'accord, mais tu peux aussi consulter la documentation de FreeBASIC en français : http://www.sarmardar.nl/FreeBASIC/Freebasic_french.zip | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Ma 1ère DLL Dim 8 Juil 2012 - 12:41 | |
| @jean_debord
Merci pour le lien. C’est une précieuse aide aussi bien pour les néophytes que pour les chevronnés.
| |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 8 Juil 2012 - 22:41 | |
| @jean debord Merci à toi pour ce lien...je vais me mettre à la lecture | |
|
| |
demenvil
Nombre de messages : 171 Age : 34 Localisation : France Marseille Date d'inscription : 30/06/2012
| Sujet: Re: Ma 1ère DLL Dim 8 Juil 2012 - 22:52 | |
| Un petit merci également | |
|
| |
ambroise
Nombre de messages : 264 Localisation : Haute-Savoie Date d'inscription : 29/04/2012
| Sujet: Re: Ma 1ère DLL Lun 9 Juil 2012 - 15:02 | |
| - jean_debord a écrit:
Tout à fait d'accord, mais tu peux aussi consulter la documentation de FreeBASIC en français :
http://www.sarmardar.nl/FreeBASIC/Freebasic_french.zip Merci pour ce lien... Je vais potasser... Une question : Peut-on créer en Freebasic des programmes en mode graphique (avec fenêtres, boutons, menus, etc. comme Panoramic) ? Je ne vois aucune utilisation du mode fenêtré dans les exemples fournis avec le programme. | |
|
| |
jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Ma 1ère DLL Lun 9 Juil 2012 - 16:37 | |
| - ambroise a écrit:
Une question : Peut-on créer en Freebasic des programmes en mode graphique (avec fenêtres, boutons, menus, etc. comme Panoramic) ? Je ne vois aucune utilisation du mode fenêtré dans les exemples fournis avec le programme. C'est possible, mais beaucoup plus difficile qu'en Panoramic puisqu'il faut appeler directement les fonctions de l'API Windows. Il y a des exemples dans le dossier examples\Windows de l'installation FreeBASIC. D'où l'intérêt du prochain Panoramic : il écrira lui-même le programme FB à partir du code Panoramic. Jack en a donné un exemple ici : https://panoramic.1fr1.net/t2268-utilisation-de-panoramicdll-avec-freebasic | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 9 Juil 2012 - 19:31 | |
| J'ai un peu potassé hier soir et certaines mises en forme me rappelle le python par lequel j'ai essayé de débuté puis laissé tombé avec son évolution qui a compliqué le chmilblick notamment l'emploi de certaines bibliothèques graphiques. mais bon, ca commence à venir, enfin je crois.... | |
|
| |
ambroise
Nombre de messages : 264 Localisation : Haute-Savoie Date d'inscription : 29/04/2012
| Sujet: Re: Ma 1ère DLL Lun 9 Juil 2012 - 19:33 | |
| @jean_debord
Merci pour ces infos. | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Ma 1ère DLL Mar 10 Juil 2012 - 1:50 | |
| Je crois que je commence à tenir le fil de DLLs.
Je suis en train d’écrire une DLL qui devrait contenir plusieurs fonctions trigonométriques qui ne sont pas définies dans PANORAMIC. Ma DLL comporte actuellement 6 fonctions (que j’ai testées avec PANORAMIC : elles fonctionnent correctement) et il me reste encore une douzaine pour être complet. Quand ça sera finalisé, je la posterais sur le Forum. Cette DLL ne sera pas d’un usage pour tout le monde (puisqu’elle est dédiée aux mathématiques), mais elle pourra servir à quelqu’un d’autre que moi. En plus, elle me permet d’être un tout petit peu moins incompétent en la matière !
Le langage choisi pour le codage est DELPHI 6 dans lequel je me trouve moins dépaysé puisque je codais, dans le temps, en PASCAL et que la syntaxe de DELPI est très proche de celle du PASCAL OBJET.
| |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Ma 1ère DLL Mar 10 Juil 2012 - 1:54 | |
| Bienvenu dans le club très restreint des développeurs de DLL en Delphi ! | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Ma 1ère DLL Mar 10 Juil 2012 - 2:05 | |
| Tu restes le maitre sans concurrent dans ce domaine !
| |
|
| |
Contenu sponsorisé
| Sujet: Re: Ma 1ère DLL | |
| |
|
| |
| Ma 1ère DLL | |
|