FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Mise en ligne de mes fonctions dans une DLL Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
Mise en ligne de mes fonctions dans une DLL Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Mise en ligne de mes fonctions dans une DLL Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Mise en ligne de mes fonctions dans une DLL Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Mise en ligne de mes fonctions dans une DLL Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Mise en ligne de mes fonctions dans une DLL Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Mise en ligne de mes fonctions dans une DLL Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Mise en ligne de mes fonctions dans une DLL Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Mise en ligne de mes fonctions dans une DLL Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Mise en ligne de mes fonctions dans une DLL Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Mise en ligne de mes fonctions dans une DLL Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Mise en ligne de mes fonctions dans une DLL Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Mise en ligne de mes fonctions dans une DLL Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Mise en ligne de mes fonctions dans une DLL Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Mise en ligne de mes fonctions dans une DLL Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment : -38%
Ecran PC gaming 23,8″ – ACER KG241Y P3bip ...
Voir le deal
99.99 €

 

 Mise en ligne de mes fonctions dans une DLL

Aller en bas 
2 participants
AuteurMessage
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Mise en ligne de mes fonctions dans une DLL Empty
MessageSujet: Mise en ligne de mes fonctions dans une DLL   Mise en ligne de mes fonctions dans une DLL EmptySam 13 Mar 2010 - 14:24

Bonjour à tous,

Je viens de mettre la première version réelle de KGF.dll en ligne sur mon site; voici le lien:
http://membres.multimania.fr/klaus/Bienvenue.1.html

Cette DLL contient pour le moment 14 fonctions, dont la fonction de copie du contenu d'un mémo dans le presse-papier et des fonctions de manipulation sur des valeursbinaires en 8, 16 et 32 bits.

Allez voir la page info concernant cette DLL pour le détail des routines.

Cette DLL évoluera au gré des nouvelles fonctions que j'ajouterai; chaque ajout sera documenté dans la page d'information.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Mise en ligne de mes fonctions dans une DLL Empty
MessageSujet: Re: Mise en ligne de mes fonctions dans une DLL   Mise en ligne de mes fonctions dans une DLL EmptySam 13 Mar 2010 - 14:39

Bonjour Klaus,
Je ne suis pas familier des DLL, juste une petite précision: je suppose que la dll doit être présente dans le même répertoire que le programme Panoramic à exécuter, et doit donc être distribuée avec ledit programme ?

Non, apparemment ce n'est pas aussi simple, il faut bien aussi la déclarer quelque part dans Panoramic, quel est le mode d'emploi ?

Bon, après tâtonnements, je finis par obtenir quelque chose:
Code:
dim res%
DLL_ON "C:\LANGAGES\PANORAMI\KGF.28.dll": ' charge la dll en mémoire
res% = DLL_CALL0("GetPrinterCount"): ' appel d'une fonction, sans paramètres
DLL_OFF: ' libère la mémoire
print res%
end
Apparemment il faut mettre le chemin complet de la dll
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Mise en ligne de mes fonctions dans une DLL Empty
MessageSujet: Re: Mise en ligne de mes fonctions dans une DLL   Mise en ligne de mes fonctions dans une DLL EmptySam 13 Mar 2010 - 14:58

salut,

Pour les DLL, c'est très simple. Tu places la DLL où tu veux, en principe, car dans ron programme Panoramic, tu dois l'ouvrir avec l'instruction suivante:
Code:
DLL_ON "nom_du_fichier_DLL"
Si tu ne spécifie pas de chemin d'accès avec le fichier (comme dans mon programme test), la DLL doit être dans le répertoire du programme. Mais tu peux mettre le chemin que tu veux, et tu la places où tu veux (dans c;\windows\system32 par exemple). L'important, c'est de spécifier le chemin correct.

Quand tu n'as plus besoin de la DLL, ou afin de pouvoir en utiliser une autre, tu fais
Code:

DLL_OFF
et elle est libérée de la mémoire.

Une subtilité: lorsque tu exécutes un programme Panoramic directement sous l'éditeur, ce n'est pas ton programme .bas qui est le "programme actif" et qui détermine le répertoire par défaut, mais l'éditeur lui-même. Donc, si tu veux placer ta DLL systématiquement dans le répertoire du programme lorsqua ton programme sera converti en exe et distribué, il faut également copier cette DLL dans le répertoire de l'éditeur Panoramic afin que celui-ci la trouve sans la spécification d'un chemin d'accès. Sinon, il y a bien sûr la possibilité de faire ce que tu fais, mais tu te bloques sur un répertoire codé dans le programme. Choisis un répertoire spécifique aux DLL et place-la à cet endroit, ou ne mets pas de chemin d'accès et copie la DLL dans le répertoire de l'éditeur Panoramic pour les tests et dans le répertoire de ton programme exe pour l'exploitation.

P.S. Le nom de ma DLL est en principe KGF.dll. Le ptit rajout ".28" au milieu est généré automatiquement par mon outil de création de site web; on peut fort bien enlever cela en renommant la DLL. On peut d'ailleurs la nommer comme on veut: ce qui importe, c'est de spécifier les noms des fonctions de façon exacte en respectant les majuscules et miniscules; le nom de la DLL elle-même n'a aucune importance.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Mise en ligne de mes fonctions dans une DLL Empty
MessageSujet: Re: Mise en ligne de mes fonctions dans une DLL   Mise en ligne de mes fonctions dans une DLL EmptySam 13 Mar 2010 - 15:02

Compris, merci Klaus, c'est bien clair (j'avais édité pour rajouter le DLL_OFF).

Effectivement, je mettais la dll dans le répertoire de mes sources, mais si je ne donne pas le chemin complet il la cherche dans le répertoire de l'éditeur, c'est à dire dans C:\Program Files\ etc... et évidemment il ne la trouve pas. C'est ce qui me chagrinait.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Mise en ligne de mes fonctions dans une DLL Empty
MessageSujet: Re: Mise en ligne de mes fonctions dans une DLL   Mise en ligne de mes fonctions dans une DLL EmptySam 13 Mar 2010 - 17:37

J'ai fait un petit outil de test des fonctions de la DLL. Il s'exécute directement sous l'éditeur, avec la DLL étant copiée dans le répertoire de l'éditeur (voir les posts ci-dessus).

Voici le programme:
Code:

rem **************************************************************
rem *                                                            *
rem *  test_KGF_DLL.bas                                        *
rem *                                                            *
rem *  Ce programme permet de tester toutes les fonctions de    *
rem *  la DLL KGF.dll.                                          *
rem *                                                            *
rem *  ATTENTION: il est essentiel de specifier le nom de la    *
rem *  routine tel quel, en respectant la casse indiquée !      *
rem *                                                            *
rem **************************************************************

label copier
label n_imp,exit,exec_bin
dim res%, n_objet%, binfunc% , binsize%, binval%, bincnt%

rem *******************************************************
rem *                                                    *
rem *  La ligne suivante sert à choisir le mémo          *
rem *                                                    *
rem *******************************************************
n_objet% = 1

alpha 11 :caption 11,"Mémo source" :top 11,20 :left 11,10
memo 1 :top 1,40 :left 1,10
button 2 :top 2,150 :left 2,20 :width 2,150
caption 2,"Copier dans Presse-Papier" :on_click 2,copier
alpha 13 :caption 13,"Mémo destination" :top 13,20 :left 13,250
memo 3 :top 3,40 :left 3,250
alpha 14 :caption 14,"Copier par le bouton à gauche, puis:" :top 14,150 :left 14,250
alpha 15 :caption 15,"Utiliser ctrl/V dans mémo destination !" :top 15,170 :left 15,250

button 21 :top 21,200 :left 21,10 :caption 21,"N. Imprimantes" :on_click 21,n_imp

container_option 30 :top 30,230 :left 30,10 :width 30,130 :caption 30,"Fonction"
option 31 :parent 31,30 :top 31,20 :left 31,10 :caption 31,"Rotation à gauche"
option 32 :parent 32,30 :top 32,40 :left 32,10 :caption 32,"Rotation à droite"
option 33 :parent 33,30 :top 33,60 :left 33,10 :caption 33,"Décalage à gauche"
option 34 :parent 34,30 :top 34,80 :left 34,10 :caption 34,"Décalage à droite"

container_option 40 :top 40,230 :left 40,150 :width 40,130 :caption 40,"Taille"
option 41 :parent 41,40 :top 41,20 :left 41,10 :caption 41," 8 bits"
option 42 :parent 42,40 :top 42,40 :left 42,10 :caption 42,"16 bits"
option 43 :parent 43,40 :top 43,60 :left 43,10 :caption 43,"32 bits"

alpha 45 :top 45,240 :left 45,320 :caption 45,"Valeur"
alpha 46 :top 46,240 :left 46,460 :caption 46,"Nombre"
edit 35  :top 35,260 :left 35,320
edit 36  :top 36,260 :left 36,460
button 37 :top 37,290 :left 37,415 :caption 37,"Exécuter" :on_click 37,exec_bin
alpha 39 :top 39,320 :left 39,350 :caption 39,"Résultat:"
edit 38  :top 38,320 :left 38,400

button 24 :top 24,200 :left 24,420 :caption 24,"Sortir ICI !" :on_click 24,exit

binfunc% = 0 :binsize% = 0 :bincnt% = 0 :dll_on "KGF.dll"

end

exec_bin:
if numeric(text$(36))=1
    bincnt% = val(text$(36))
else
    message "Il faut un nombre numérique !" :return
end_if
if numeric(text$(35))=1
    binval% = val(text$(35))
    binfunc% = checked(31) + 2*checked(32) + 3*checked(33) + 4*checked(34)
    binsize% = checked(41) + 2*checked(42) + 3*checked(43)
    if binsize%=1
        if binfunc%=1 then binval% = dll_call2("bin_BROL",binval%,bincnt%)
        if binfunc%=2 then binval% = dll_call2("bin_BROR",binval%,bincnt%)
        if binfunc%=3 then binval% = dll_call2("bin_BSHL",binval%,bincnt%)
        if binfunc%=4 then binval% = dll_call2("bin_BSHR",binval%,bincnt%)
    end_if
    if binsize%=2
        if binfunc%=1 then binval% = dll_call2("bin_WROL",binval%,bincnt%)
        if binfunc%=2 then binval% = dll_call2("bin_WROR",binval%,bincnt%)
        if binfunc%=3 then binval% = dll_call2("bin_WSHL",binval%,bincnt%)
        if binfunc%=4 then binval% = dll_call2("bin_WSHR",binval%,bincnt%)
    end_if
    if binsize%=3
        if binfunc%=1 then binval% = dll_call2("bin_ROL",binval%,bincnt%)
        if binfunc%=2 then binval% = dll_call2("bin_ROR",binval%,bincnt%)
        if binfunc%=3 then binval% = dll_call2("bin_SHL",binval%,bincnt%)
        if binfunc%=4 then binval% = dll_call2("bin_SHR",binval%,bincnt%)
    end_if
    text 38,str$(binval%)
else
    message "Il faut une valeur numérique !"
end_if
return

exit:
dll_off :terminate

n_imp:
res% = dll_call0("GetPrinterCount")
message str$(res%)
return

copier:
rem **************************************************************
rem *                                                            *
rem *  Les 4 lignes suivantes effectuent la copie                *
rem *  du memo n_objet% intégralement dans le presse-papier !    *
rem *  Le reste du code n'est que le programme de démo.          *
rem *  Le dll_on est fait au début du programme !                *
rem *                                                            *
rem **************************************************************
set_focus n_objet%
rem dll_on "KGF.dll"
res% = dll_call0("ClipboardCopy")
rem dll_off
rem **************************************************************
rem *                                                            *
rem *  fin du code utile                                        *
rem *                                                            *
rem **************************************************************

return

Amusez-vous bien !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Mise en ligne de mes fonctions dans une DLL Empty
MessageSujet: Re: Mise en ligne de mes fonctions dans une DLL   Mise en ligne de mes fonctions dans une DLL EmptySam 13 Mar 2010 - 18:32

Ta dll se télécharge sous KGF.28.dll (?), il faut donc préalablement la renommer en KGF.dll
Revenir en haut Aller en bas
Invité
Invité




Mise en ligne de mes fonctions dans une DLL Empty
MessageSujet: Re: Mise en ligne de mes fonctions dans une DLL   Mise en ligne de mes fonctions dans une DLL EmptySam 13 Mar 2010 - 19:10

Klaus:
Il y a une chose que je ne comprend pas très bien: il faut afficher un nombre et une valeur ??? Pourquoi? Je veux seulement faire une rotation d'un nombre.
La sélection du texte à copier marche, et je vais m'en servir.
Tu devrais déporter la procédure exit à la fin, là où il n'y a pas de RETURN, ceci a pour effet de ne pas faire sursauter Panoramic.
Continue à nous étonner.
Si ça continu, on va te faire faire nos programmes.
@+

Excuses moi, il suffit de regarder le source pour comprendre.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Mise en ligne de mes fonctions dans une DLL Empty
MessageSujet: Re: Mise en ligne de mes fonctions dans une DLL   Mise en ligne de mes fonctions dans une DLL EmptySam 13 Mar 2010 - 19:58

Pour JL35:

Oui, on peut/il faut renommer cette DLL. Comme je l'ai dit dans un post précédent, c'est un truc de mon générateur de site web; je trouverai la parade.

Pour Cosmos70:

La valeur est ce qui subit la transformation, et le "nombre" est le nombre de bits pour le décalage ou la rotation.

Cordialement Klaus
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





Mise en ligne de mes fonctions dans une DLL Empty
MessageSujet: Re: Mise en ligne de mes fonctions dans une DLL   Mise en ligne de mes fonctions dans une DLL Empty

Revenir en haut Aller en bas
 
Mise en ligne de mes fonctions dans une DLL
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Mise en ligne de mon site
» Espace libre de mise en ligne de procédures
» Nb maxi de caractères dans une ligne
» Petite erreur dans la doc en ligne
» [RESOLU] Quelle ligne est sélectionnée dans SYNEDIT ?

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: