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.
extension de l'interface avec les DLL Emptypar Pedro Aujourd'hui à 8:08

» Un autre pense-bête...
extension de l'interface avec les DLL Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
extension de l'interface avec les DLL Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
extension de l'interface avec les DLL Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
extension de l'interface avec les DLL Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
extension de l'interface avec les DLL Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
extension de l'interface avec les DLL Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
extension de l'interface avec les DLL Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
extension de l'interface avec les DLL Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
extension de l'interface avec les DLL Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
extension de l'interface avec les DLL Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
extension de l'interface avec les DLL Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
extension de l'interface avec les DLL Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
extension de l'interface avec les DLL Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
extension de l'interface avec les 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
-17%
Le deal à ne pas rater :
(Black Friday) Apple watch Apple SE GPS + Cellular 44mm (plusieurs ...
249 € 299 €
Voir le deal

 

 extension de l'interface avec les DLL

Aller en bas 
5 participants
AuteurMessage
Klaus

Klaus


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

extension de l'interface avec les DLL Empty
MessageSujet: extension de l'interface avec les DLL   extension de l'interface avec les DLL EmptyDim 28 Déc 2014 - 19:09

Pour communiquer avec les fonctions DLL, les possibilités sont très restreintes. Plusieurs limitations sont assez gênantes:
1. le nombre de paramètres est limité à 6
2. tous les paramètres doivent être passés "par valeur" - pas de passage "par référence"
2. les paramètres doivent obligatoirement être de type INTEGER
3. in n'est pas possible de passer un tableau (de INTEGER bien sûr)
4. impossibilité de déclencher un évènement Panoramic

J'aimerais suggérer les améliorations et extensions suivantes:
a. lever la limitation à 6 paramètres.
Il serait bien de pouvoir passer le nombre de paramètres qu'on veut. Et, certes, si la fonction appelée réclame un nombre de paramètres différents, il pourrait y avoir une erreur Panoramic "Syntax error", ou à la limite un crash, car l'erreur du programmeur est évidente.
b. il serait très utile de pouvoir passer un tableau, via une variante de la fonction ADR qui pourrait être ADR_ARRAY(MonTableau%).
Le résultat de cette fonction serait l'adresse des données de l'élément MonTableau%(0) ou MonTableau%(0,0). Ceci bien sûr dans l'hypothèse que les données sont stockées dans une zone mémoire contigüe. Et, comme ADR, la fonction ADR_ARRAY devrait marcher également sur des tableaux de flottants et de chaînes de caractères. Dans tous les cas, elle devrait retourner l'adresse des données de la première cellule. Il est de la responsabilité du programmeur de la DLL de faire le bon usage de cette valeur, en tenant compte de l'espace occupé par chaque type d'information (entier, flottant ou chaîne de caractères), exactement comme c'est actuellement le cas pour ADR. Dans le cas d'un tableau de chaînes de caractères, le contenu des 32 (ou 64) bits pointés par ADR est un pointeur vers le contenu de la première cellule qui est lui-même un pointeur vers le texte de la chaîne de caractères (un PString en Delphi). Car je suppose qu'un tableau de chaînes de caractères en Panoramic est mémorisé sous forme d'un tableau INTEGER dont chaque cellule contient un PString pointant les la chaîne de caractères proprement-dite ?
c. pouvoir déclencher un évènement Panoramic.
Actuellement, je le fais en utilisant on objet EDIT caché par HIDE, ayant un évènement ON_CHANGE. Et dans la DLL, j'utilise l'API SendMessage avec le code WM_SETTEXT pour déposer un texte dans cet objet (identifié par son handle). L'évènement se déclenche, et je peux le traiter en Panoramic. Or, ceci est lourd et nécessite un objet Panoramic "abusé" de cette façon. Je suggère un évènement spécifique DLL_EVENT qui serait géré par les commandes:
ON_DLL_EVENT label
OFF_DLL_EVENT
et on déclencherait cet évènement par un SendMessage avec le code message de type "user_defined" PANORAMIC_DLL_EVENT qui pourrait avoir la valeur WM_USER+x (WM_USER = 0400 hexa, et x étant choisi par Jack). Et ce message serait adressé à la form 0 dans tous les cas, ce qui déclencherait l'évènement ON_DLL_EVENT qui appellerait alors le label en question. Et les valeurs LPARAM et HPARAM du message seraient mises à disposition du programme Panoramic dans des variables système DLL_LPARAM et DLL_HPARAM.

On peut certes imaginer un interfaçage plus complexe, en particulier avec le passage de paramètres "par référence (pouvoir retourner une valeur par un paramètre), avec la déclaration de prototypes des fonctions préalable au premier appel, etc. Mais je pense que cela sort du concept de Panoramic. Alors, j'ai essayé de définir un ensemble cohérent mais restant dans la ligne de ce qui existe.

Evidemment, ce sont juste des suggestions. La seule "nouveauté est la fonction ADR_ARRAY qui serait vraiment très utile.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

extension de l'interface avec les DLL Empty
MessageSujet: Re: extension de l'interface avec les DLL   extension de l'interface avec les DLL EmptyDim 28 Déc 2014 - 19:27

Je ne comprends pas tout mais je comprends tout de même assez pour soutenir les souhaits de Klaus.
Ça fera un beau cadeau pour 2015 ou  du prochain Noël.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

extension de l'interface avec les DLL Empty
MessageSujet: Re: extension de l'interface avec les DLL   extension de l'interface avec les DLL EmptyDim 28 Déc 2014 - 21:44

Je ne peux être que pour et j'espère que Jack ira dans ce sens pour continuer d'ouvrir Panoramic.
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

extension de l'interface avec les DLL Empty
MessageSujet: re   extension de l'interface avec les DLL EmptyDim 28 Déc 2014 - 23:02

Tu as tout mon soutien pour tes demandes.
+1
Revenir en haut Aller en bas
jean_debord

jean_debord


Nombre de messages : 1266
Age : 70
Localisation : Limoges
Date d'inscription : 21/09/2008

extension de l'interface avec les DLL Empty
MessageSujet: Re: extension de l'interface avec les DLL   extension de l'interface avec les DLL EmptyLun 29 Déc 2014 - 8:57

Je soutiens moi aussi la proposition de Klaus !

Il serait bon d'avoir aussi un passage par référence dans les SUB, ainsi que le passage des tableaux.

Il faudrait sans doute définir un attribut (équivalent de BYREF en FreeBasic ou de VAR en Delphi) pour distinguer les paramètres passés par référence. Ou alors, passer systématiquement par référence comme en QuickBasic.

Autre problème : on a la fonction ADR() qui donne l'adresse d'une variable mais il manque la fonction inverse qui permettrait d'accéder à une variable dont on connaît l'adresse (équivalent de p^ en Delphi ou de *p en C).



Revenir en haut Aller en bas
http://www.unilim.fr/pages_perso/jean.debord/index.htm
Contenu sponsorisé





extension de l'interface avec les DLL Empty
MessageSujet: Re: extension de l'interface avec les DLL   extension de l'interface avec les DLL Empty

Revenir en haut Aller en bas
 
extension de l'interface avec les DLL
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» extension de l'interface avec les DLL - bis
» Extension de Checked(N)
» Diverses propositions
» Extension de la commande DELETE
» Extension du Select ... case ... End_Select

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos souhaits d'amélioration de Panoramic-
Sauter vers: