Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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 Mon 19 February 2007 10:58

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

Problème de code MapBasic

Bonjour,

J'ai besoin d'un petit coup de pouce !

J'ai le code suivant :

Code:

Sub DrawTriangulate(nbTriangle As Integer)
    Dim ind As Integer
    Dim triangleObj As Object
    Dim cmd As String

    'création de la table Triangulate et association d'un partie graphique
    cmd = "Create Table Triangulate (ID Integer) File "".\Triangulate.tab"""
    Run Command cmd
    Create Map For Triangulate CoordSys Table point1

    ' Pour chaque triangle
    For ind = 1 to nbTriangle 
         Create Region Into Variable triangleObj 0
         Alter Object triangleObj Node Add (Vertex(Triangle(ind).vv0).x, Vertex(Triangle(ind).vv0).y)
         Alter Object triangleObj Node Add (Vertex(Triangle(ind).vv1).x, Vertex(Triangle(ind).vv1).y)
         Alter Object triangleObj Node Add (Vertex(Triangle(ind).vv2).x, Vertex(Triangle(ind).vv2).y)
         cmd = "Insert Into Triangulate (ID, obj) Values (" & ind & ", triangleObj)"
         Run Command cmd
    Next 'ind
End Sub

avec

Code:

Type dVertex
    x As Float
    y As Float
End Type

Type dTriangle
    vv0 As Integer
    vv1 As Integer
    vv2 As Integer
End Type

Define MaxVertices  500
Define MaxTriangles  1000

Global Vertex(MaxVertices) As dVertex
Global Triangle(MaxTriangles) As dTriangle

Le code copile et plante à l'exécution avec le message suivant : "Variable ou Champ triangleObj non défini".
J'ai beau essayer de mettre des guillemets un peu partout, ça ne fonctionne pas.

Si quelqu'un a une idée ?

merci d'avance

Hors ligne

 

#2 Mon 19 February 2007 12:41

Florent
Participant actif
Lieu: Nantes
Date d'inscription: 5 Sep 2005
Messages: 86
Site web

Re: Problème de code MapBasic

Bonjour,

Votre problème vient de la ligne :

Code:

Insert Into

Si vous remplacez ce code par celui-ci, tout rentre dans l'ordre :

Code:

    
Insert Into Triangulate (obj) values(triangleObj)
run command "update Triangulate set ID = " + ind + " where Rowid =" + ind

Au passage : Merci MapInfo pour vos messages d'erreurs tellement...explicites !

Bref, avec ce code ça devrait fonctionner.


Florent

Hors ligne

 

#3 Mon 19 February 2007 13:06

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

Re: Problème de code MapBasic

Ok,

la ligne

Code:

Insert Into Triangulate (obj) values (triangleObj)

pose des problèmes de compilation : "Subroutine argument obj not defined AND Unrecognized command values"

...

le problème reste donc entier.

Merci de vos remarques.

Didier

Hors ligne

 

#4 Mon 19 February 2007 13:54

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

Re: Problème de code MapBasic

Ok,

j'ai trouvé un code qui fonctionne.

Code:

Sub DrawTriangulate(nbTriangle As Integer)
    Dim ind As Integer
    Dim triangleObj As Object
    Dim cmd As String

   'création de la table Triangulate et association d'un partie graphique
    cmd = "Create Table Triangulate (ID Integer) File "".\Triangulate.tab"""
    Run Command cmd
   Create Map For Triangulate CoordSys Table points

   ' Pour chaque triangle
   For ind = 1 to nbTriangle 
        Create Region Into Variable triangleObj 0
        Alter Object triangleObj Node Add (Vertex(Triangle(ind).vv0).x, Vertex(Triangle(ind).vv0).y)
        Alter Object triangleObj Node Add (Vertex(Triangle(ind).vv1).x, Vertex(Triangle(ind).vv1).y)
        Alter Object triangleObj Node Add (Vertex(Triangle(ind).vv2).x, Vertex(Triangle(ind).vv2).y)
         cmd = "Insert Into Triangulate (ID) values (" & ind & ")"
        Run Command cmd
         update Triangulate set obj = triangleObj where Rowid = ind
        Run Command cmd
   Next 'ind
End Sub

Merci à Florent de m'avoir mis la puce à l'oreille pour aller vers une autre piste.

Didier.

Hors ligne

 

#5 Mon 19 February 2007 15:00

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

Re: Problème de code MapBasic

Ok,

j'ai trouvé un code qui fonctionne.

Code:

Sub DrawTriangulate(nbTriangle As Integer)
    Dim ind As Integer
    Dim triangleObj As Object
    Dim cmd As String

   'création de la table Triangulate et association d'un partie graphique
    cmd = "Create Table Triangulate (ID Integer) File "".\Triangulate.tab"""
    Run Command cmd
   Create Map For Triangulate CoordSys Table points

   ' Pour chaque triangle
   For ind = 1 to nbTriangle 
        Create Region Into Variable triangleObj 0
        Alter Object triangleObj Node Add (Vertex(Triangle(ind).vv0).x, Vertex(Triangle(ind).vv0).y)
        Alter Object triangleObj Node Add (Vertex(Triangle(ind).vv1).x, Vertex(Triangle(ind).vv1).y)
        Alter Object triangleObj Node Add (Vertex(Triangle(ind).vv2).x, Vertex(Triangle(ind).vv2).y)
         cmd = "Insert Into Triangulate (ID) values (" & ind & ")"
        Run Command cmd
         update Triangulate set obj = triangleObj where Rowid = ind
        Run Command cmd
   Next 'ind
End Sub

Merci à Florent de m'avoir mis la puce à l'oreille pour aller vers une autre piste.

Didier.

Hors ligne

 

#6 Mon 19 February 2007 16:03

Patrick PALMIER
Participant actif
Lieu: Lille
Date d'inscription: 18 Jan 2007
Messages: 97

Re: Problème de code MapBasic

la commande suivante va cherche de mettre à jour la colonne obj avec la colonne triangleobj qui n'existe pas

cmd = "Insert Into Triangulate (ID, obj) Values (" & ind & ", triangleObj)"

essayer directement à la place

Insert Into Triangulate (ID, obj) Values (ind, triangleObj)

sans passer par une cmd

Hors ligne

 

#7 Mon 19 February 2007 17:10

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

Re: Problème de code MapBasic

Pour info, j'ai pas testé mais la ligne de code

Code:

Insert Into Triangulate (ID, obj) Values (ind, triangleObj)

ne doit pas compiler. MapBasic cherche à évaluer les fonctions Triangulate et Values avec les paramètres respectifs ID, obj et ind, triangleObj.

Merci de votre réponse.

Didier

Hors ligne

 

Pied de page des forums

Powered by FluxBB