#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
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