#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 Subavec
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 dTriangleLe 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 SubMerci à 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 SubMerci à 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


