banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Thu 26 April 2007 09:04

didier.bondyfalat
Participant occasionnel
Lieu: Nice
Date d'inscription: 31 Jan 2007
Messages: 31

Echange de variables entre MapBasic et MapInfo

Bonjour,

Mon but est d'initialiser deux variables à partir d'un fichier.

Pour faire cette manip, j'ai écrit un programme en MapBasic "toto.mbx" qui possède deux variables globales.

Au démarrage de MapInfo, j'exécute mon programme toto.mbx qui fonctionne à merveille.

Mais comment fait-on pour récuper les fameuses variables globales du mbx dans MapInfo ? ou bien dans un autre mbx ?


Merci pour vos lumières.

Didier.

Hors ligne

 

#2 Thu 26 April 2007 11:14

Cartosig
Participant assidu
Date d'inscription: 16 Oct 2006
Messages: 222

Re: Echange de variables entre MapBasic et MapInfo

Bonne question car en effet via la FMB on ne peut pas utiliser les variables (globales ou pas) d'un MBX...
Il faudrait tester de lancer deux MBX avec des variables qui ont le meme nom et voir ce qu'il se passe...
A priori je pense que les zones mémoires sont complétement indépendantes et peut être imperméables entre des MBX et MI, mais je me trompe peut-être (je l'espère même !).

Hors ligne

 

#3 Thu 26 April 2007 11:25

didier.bondyfalat
Participant occasionnel
Lieu: Nice
Date d'inscription: 31 Jan 2007
Messages: 31

Re: Echange de variables entre MapBasic et MapInfo

Les zones mémoires sont complètements indépendantes puisqu'il existe une technique d'échange de variable à partir des instructions DDE du mbx vers mapinfo depuis mapinfo.

Cependant cette technique fonctionne que si le mbx est encore actif. Dans mon cas, le mbx s'exécute et meurt desuite.

Didier.

Hors ligne

 

#4 Thu 26 April 2007 14:31

Cartosig
Participant assidu
Date d'inscription: 16 Oct 2006
Messages: 222

Re: Echange de variables entre MapBasic et MapInfo

Avez vous un End Program dans votre mbx qui signale la fin de l'éxécution du code ?
Si c'est le cas il suffirait d'ajouter un bouton dans une barre ou un menu deroulant qui fasse appel à une Sub EndHandler (qui gère la fin de l'éxecution d'un MBX) dans laquelle vous aurez appelé la fonction End Program, ce qui permettrait de garder les variables en mémoire jusqu'à ce moment là...

Dernière modification par Cartosig (Thu 26 April 2007 14:34)

Hors ligne

 

#5 Thu 26 April 2007 21:37

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: Echange de variables entre MapBasic et MapInfo

Bonjour,
A mon humble avis la première impression de Cartosig est la bonne:
- on ne peut pas passer de variable entre MB et MI
- les variables globales ne peuvent permettre le passage qu'entre modules d'un projet MB, pas entre deux mbx
Mais je ne demande qu'à être contredit !!

Hors ligne

 

#6 Fri 27 April 2007 00:19

Damien BEAUSEIGNEUR
Participant assidu
Lieu: meyzieu
Date d'inscription: 5 Sep 2005
Messages: 425

Re: Echange de variables entre MapBasic et MapInfo

Bonjour

En solution de contournement

IL faudrait prévoir l'écriture d'un fichier contenant les variables globales à récupérer.
Comme çà les différents programmes devrait pouvoir échanger des informations sans passer par des variables inaccessibles.

Hors ligne

 

#7 Fri 27 April 2007 09:09

Gérard parcoli
Participant actif
Date d'inscription: 9 Jan 2007
Messages: 95

Re: Echange de variables entre MapBasic et MapInfo

Bonjour

pour le transfert des variable de l'application MB vers mapinfo, vous pouvez également utiliser une astuce avec des 'Run Command' :

Dim Variable1 as string                                           'définition de la variable dans MB
Run command "Dim Variable1 as string"                   'définition de la variable dans MI, équivalent à la même commande saisie dans la FMB

Variable1 = "montexte"                                           ' affectation d'une valeur à la variable dans MB
Run command "Variable1 = """ + Variable1 +""""       'affectation d'une valeur à la variable dans Mi, équivalent à la même commande saisie dans la FMB


Dans Mapinfo il devient ensuite possible d'utiliser Variable1 dans les expressions/fonctions.

Mais attention, Mapinfo ne saura pas gérer deux <Run command "Dim Variable1 as string"> dans une même session (lancement de deux applications faisant la même définition de variable dans mi, ou tout simplement lancer deux fois le meme MB). Il faut tenter de jouer avec la commande Undim dans ce cas (Run command "unDim Variable1")... un plantage du MBX peut ainsi nécessiter le redémarrage de MI si on sait pas quelles variables undimer (ou s'il y en a beaucoup).

Pour interroger depuis mb la valeur de cette variable mi, on peut passer par DDE. Dans MB :
Dim i_chan_num As Integer, s_Valeur1 As String
i_chan_num = DDEInitiate("MapInfo","system")
s_Valeur1 = DDERequest$(i_chan_num, "variable1")


Gerard

Hors ligne

 

#8 Fri 27 April 2007 10:19

Cartosig
Participant assidu
Date d'inscription: 16 Oct 2006
Messages: 222

Re: Echange de variables entre MapBasic et MapInfo

Evidemment il suffisait d'y penser ! Bien vu Gérard !

Hors ligne

 

#9 Fri 04 May 2007 14:32

didier.bondyfalat
Participant occasionnel
Lieu: Nice
Date d'inscription: 31 Jan 2007
Messages: 31

Re: Echange de variables entre MapBasic et MapInfo

Ok, merci de vos réponses.

J'ajouterai tout de même la possibilité de passer par des variables d'environnement grâce aux fonctions GetEnvironmentVariable et SetEnvironmentVariable de la librairie kernel32. Elles permettent de définir des variables dans l'environnement windows et visible uniquement dans le procecus de MapInfo (pas trop de polution).

Didier.

Hors ligne

 

Pied de page des forums

Powered by FluxBB