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
» bouton dans autre form que 0
extension de l'interface avec les DLL Emptypar leclode Aujourd'hui à 13:59

» KGF_dll - nouvelles versions
extension de l'interface avec les DLL Emptypar Klaus Aujourd'hui à 11:41

» Gestion d'un système client-serveur.
extension de l'interface avec les DLL Emptypar Klaus Aujourd'hui à 10:23

» PANORAMIC V 1
extension de l'interface avec les DLL Emptypar papydall Sam 4 Mai 2024 - 3:43

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
extension de l'interface avec les DLL Emptypar Froggy One Jeu 2 Mai 2024 - 11:16

» @Jack
extension de l'interface avec les DLL Emptypar Jack Mar 30 Avr 2024 - 20:40

» trop de fichiers en cours
extension de l'interface avec les DLL Emptypar papydall Lun 29 Avr 2024 - 23:39

» Une calculatrice en une ligne de programme
extension de l'interface avec les DLL Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
extension de l'interface avec les DLL Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
extension de l'interface avec les DLL Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
extension de l'interface avec les DLL Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
extension de l'interface avec les DLL Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Dessine-moi une galaxie
extension de l'interface avec les DLL Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
extension de l'interface avec les DLL Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
extension de l'interface avec les DLL Emptypar papydall Dim 21 Avr 2024 - 23:30

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment : -29%
PC portable – MEDION 15,6″ FHD Intel i7 ...
Voir le deal
499.99 €

 

 extension de l'interface avec les DLL

Aller en bas 
5 participants
AuteurMessage
Klaus

Klaus


Nombre de messages : 12289
Age : 74
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 : 7002
Age : 73
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 : 51
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 : 8610
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 : 1250
Age : 69
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: