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 Wed 25 November 2009 07:17

Yulahop
Participant occasionnel
Lieu: Nouméa Nouvelle-Calédonie
Date d'inscription: 22 Jun 2006
Messages: 18

plantage lors de l'affichage de la table attributaire d'une selection

Bonjour !

Alors que je faisais des essais pour tester une macro map basic que j'ai écris, mapinfo a planté.
Eu égard à mon niveau de map basic, rien d'étonnant jusque là.

Ce qui est plus embêtant c'est que depuis, mapinfo plante quand je veux faire afficher la table attributaire d'une sélection alors que le mbx n'est pas chargé.

Quelqu'un a t il déjà été confronté à un problème similaire ?

mapinfo 8.5.1B
mapbasic 6.5


Yaël

Hors ligne

 

#2 Wed 25 November 2009 12:29

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

Re: plantage lors de l'affichage de la table attributaire d'une selection

Bonjour
Mystère (pour moi)....que seule la vision du code de votre mbx pourrait peut être éclaircir !!
Vous nous montrez ça ??

Hors ligne

 

#3 Wed 25 November 2009 23:45

Yulahop
Participant occasionnel
Lieu: Nouméa Nouvelle-Calédonie
Date d'inscription: 22 Jun 2006
Messages: 18

Re: plantage lors de l'affichage de la table attributaire d'une selection

Bonjour !

Précision sur le but du code :
j'ai deux tables (A et B) de point et je cherche à identifier pour chaque point de la table A le point le plus proche de la table B.
Ensuite je trace une droite dans une 3e table pour relier chaque point A avec son plus proche point B.
J'ai écrits deux boucles pour comparer chaque point A a chaque point B.

Lors d'un premier essais sur des tables avec de nombreux points A, la routine semblait tourné normalement. Je l'ai interrompu pour la faire tourner sur des fichiers moins gros pour voir le résultat final.

Mes ennuis ont commencé après

Voici le code fautif qui paraitra peut être maladroit pour les puristes de MB

Code:

include "C:\Program Files\MapInfo\MapBasic\MAPBASIC.DEF"

declare sub main     

sub main

set coordsys Earth Projection 8, 9999, 4, 97.295, -263.237, 310.866, 1.599931, -0.838952, -3.14118, 13.325864, 0, "m", 165, 0, 0.9996, 500000, 10000000 Bounds (-7746230.6469, 1712.61611073) (8746230.6469, 19998287.3839) 

'les variables
dim xdol as float    'coordonnées pt A
dim ydol as float
dim xpt as float            'coordonnées pt B
dim ypt as float
dim xclst as float        'coordonnées pt + près
dim yclst as float
dim distmin as float
dim distcalc as float

dim nb_ptdoline as integer
dim nb_ptligne as integer
dim n as integer
dim j as integer

dim dol as object     'objet point de la table A
dim opt as object     'objet point de la table B

'ouverture des tables A, B et création de la table de stockage des lignes droites
open table "C:\Etude\A09-52 - Doline\SELECTION DE DOLINE.tab" as ptdoline
open table "C:\Etude\A09-52 - Doline\LIMITE_PLATEAU_ptp.tab" as ptligne
Create Table "CHEMIN_COURT" (OBJ_ID char(10), LONGUEUR float) file "C:\Etude\CHEMIN_COURT.TAB" TYPE NATIVE Charset "WindowsLatin1"

'fenêtre carte pour les chemin les plus courts
Create Map For CHEMIN_COURT CoordSys Earth Projection 8, 9999, 4, 97.295, -263.237, 310.866, 1.599931, -0.838952, -3.14118, 13.325864, 0, "m", 165, 0, 0.9996, 500000, 10000000 Bounds (-7746230.6469, 1712.61611073) (8746230.6469, 19998287.3839)
Map from CHEMIN_COURT
Set Map Layer 1 Editable On

nb_ptdoline = tableinfo(ptdoline, TAB_INFO_NROWS)
nb_ptligne = tableinfo(ptligne, TAB_INFO_NROWS)

print "nombre de dolines à traiter: " & nb_ptdoline
print "nombre de points a comparer: " & nb_ptligne

distmin = 1000000
n = 1
j = 1

for n = 1 to nb_ptdoline
  print "doline traitée : " & n & " sur " & nb_ptdoline
    select * from ptdoline where rowid = n
    dol = selection.obj
    xdol = objectgeography(dol, OBJ_GEO_POINTX)
    print xdol
  ydol = objectgeography(dol, OBJ_GEO_POINTY)
  print ydol
  
  for j = 1 to nb_ptligne
      select * from ptligne where rowid = j
      opt = selection.obj
      xpt = objectgeography(opt, OBJ_GEO_POINTX)        
      print xpt
      ypt = objectgeography(opt, OBJ_GEO_POINTY)
    print ypt
    
    'calcul de la distance 
    distcalc = sqr(abs(xdol - xpt) * abs(xdol - xpt) + abs(ydol - ypt) * abs(ydol - ypt))
    print distcalc
    
    if distcalc < distmin 
        then
        distmin = distcalc
        xclst = xpt
      yclst = ypt
    end if 
      
      j = j + 1
  next
  
  note distmin
  create line into window frontwindow() (xdol, ydol) (xclst, yclst)
  commit table CHEMIN_COURT 
  
    n = n + 1  
next

end sub

Entre temps, j'ai réinstallé MI mais le problème persiste et nettoyé le registre.


Merci pour votre aide et vos remarques.

Salutations


Yaël

Hors ligne

 

#4 Thu 26 November 2009 02:05

Yulahop
Participant occasionnel
Lieu: Nouméa Nouvelle-Calédonie
Date d'inscription: 22 Jun 2006
Messages: 18

Re: plantage lors de l'affichage de la table attributaire d'une selection

Petite précision :

Le problème de plantage survient également lorsque je demande un fenêtre mise en page...


Yaël

Hors ligne

 

#5 Thu 26 November 2009 09:41

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

Re: plantage lors de l'affichage de la table attributaire d'une selection

Bonjour
Rien d'illégal dans ce code...qui n'est pas en cause.
Alors le mystère reste entier sad
Quand vous dites plantage, ça se traduit par quoi: vraiment planté, ou alors rien ne se passe ??
Dans le second cas les fenêtres sont peut être hors écran ??
Ce plantage survient sur toute table, ou seulement sur certaines liées à ce mbx ??
ps: éviter espaces, accents, caractères "spéciaux" ...dans les nom de table

Hors ligne

 

#6 Fri 27 November 2009 04:13

Yulahop
Participant occasionnel
Lieu: Nouméa Nouvelle-Calédonie
Date d'inscription: 22 Jun 2006
Messages: 18

Re: plantage lors de l'affichage de la table attributaire d'une selection

Bonjour,

Le plantage se manifeste par la transformation de la flèche du pointeur en sablier puis par l'affichage de "ne répond pas" dans la barre de titre de la fenêtre MI. Un peu comme dans le cas d'une routine coincée dans une boucle infinie.
Ce plantage survient quelque soit la table.
J'ai également remarqué que plusieurs outils étaient chargés plusieurs fois (coordinate extractor, rotation symbol, etc...).


Yaël

Hors ligne

 

#7 Fri 27 November 2009 06:47

Yulahop
Participant occasionnel
Lieu: Nouméa Nouvelle-Calédonie
Date d'inscription: 22 Jun 2006
Messages: 18

Re: plantage lors de l'affichage de la table attributaire d'une selection

J'ai finalement réussi à résoudre le problème.
Mon répertoire TEMP était rempli de plusieurs milliers de fichiers temporaires MI.
J'ai tout supprimé et tout est rentré dans l'ordre.

Merci pour vos réponses.


Yaël

Hors ligne

 

#8 Fri 27 November 2009 08:07

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

Re: plantage lors de l'affichage de la table attributaire d'une selection

Bon sang mais c'est bien sûr !!....
C'est un classique qu'on oublie trop souvent: que ce soit à l'occasion d'un développement (qui s'accompagne toujours d'essais ratés et de plantages ...) ou en fonctionnement "normal", le TEMP a tendance à gonfler
Et quand TEMP gavé, lui toujours faire ainsi.... big_smile

Hors ligne

 

Pied de page des forums

Powered by FluxBB