plantage aprs un canvas.scroll

Bonjour tous,
le contexte:

  • j’ai plusieurs “containerControls” dans un canvas, crs par un drop de fichier sur la fentre de l’appli
  • chaque “container” contient plusieurs “controls” dont des canvas qui servent de boutons
  • un, sert supprimer un container
  • l’autre en rajouter un

Dans la procdure de suppression, le canvas cliqu ouvre une fentre (Modal dialogue) avec deux boutons pour valider ou non la suppression.
Si c’est “oui” :
#1- je supprime dans un “arrayPropriete” (liste une proprit des containers crs) la ligne qui a l’index du container supprimer
#2- je supprime tous les containers en bouclant sur l’array de mes container en faisant un "myContainers(i).close
#3- je redim myContainers(-1)
#4- je recre les containers (embedeWithin) en bouclant sur “arrayPropriete” et je rajoute chaque boucle le container cr dans “myContainers” (append.myContainers etc…)
la fin, tout s’affiche , tout fonctionne… Ben alors? vous allez me dire!
le problme se pose quand je rajoute un “container”
la procdure est quasiment la mme sauf que je rajoute un lment au tableau “arrayPropriete” (#1) au lieu de supprimer et que je ne passe plus par une fentre de validation.
L encore tout s’affiche, mais si je scroll le canvas ou si je redimensionne la fentre … a plante “(…a quitt de manire imprvue” <- msg du systme)
a plante la ligne:

scrollingCanvas.Scroll( 0 , delta , 0 , 0, scrollingCanvas.Width , scrollingCanvas.Height , True ) (-> event "valueChanged "du canvas scroll)

Par contre, plus de plantage si je passe par une fentre de validation, comme dans le cas de la suppression.

@Bruno Jacquet — Et que dit le rapport de bug ?

??? je ne connais pas cet outil…
Je suppose que tu parles du rapport de bug du systme. Je n’avais pas saisi. Je regarde…

@Bruno Jacquet — Chaque plantage peut générer un rapport plus ou moins détaillé pour connaître l’état du système et du processeur à ce moment précis. Ça permet, par exemple, de connaitre exactement quelle fonction a provoqué le plantage même à l’intérieur d’une bibliothèque du système.

Tu peux activer le rapport détaillé comme ceci:
1. Télécharge et installe l’utilitaire Onyx. Choisi bien la version qui correspond à ta version du système (https://www.titanium-software.fr/en/onyx.html ). Le programme demande beaucoup d’autorisations mais c’est normal quand tu veux modifier des options du système.
2. Va dans Paramètres/Divers puis sélectionne “Développeur” dans la section “Mode opératoire des rapports de diagnostic”.
3. Redémarre

Normalement, tu devrais avoir un rapport qui s’affiche après chaque plantage (mais pas immédiatement).

Les rapports sont aussi accessibles depuis l’application Console. Clique sur “Rapports utilisateur” pour voir les rapports enregistrés et le nom de chaque fichier contient la date

Bon, le rapport de bug est un peu soteric pour moi.
Les premires lignes donnent a:

[quote]Crashed Thread: 0 Dispatch queue: com.apple.main-thread

Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x000000003f800004
Exception Note: EXC_CORPSE_NOTIFY

VM Regions Near 0x3f800004:
MALLOC_LARGE 000000000ceed000-000000000cf67000 [ 488K] rw-/rwx SM=PRV
–>
__TEXT 000000008fec7000-000000008fefc000 [ 212K] r-x/rwx SM=COW /usr/lib/dyld

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 rbframework.dylib 0x0026ed4c RuntimeObjectIsa + 116
1 rbframework.dylib 0x002db551 ObjectIsa(RuntimeObject*, ObjectDefinition*, bool) + 337
2 rbframework.dylib 0x00322ba1 RuntimeCanvas::MovePane(Rect const&, unsigned char) + 85
3 rbframework.dylib 0x0032195f canvasScroll + 285
4 MTLcolors2png v.0.6.debug 0x000f65c9 Canvas.Scroll%%oi4i4i4i4i4i4b + 115
5 MTLcolors2png v.0.6.debug 0x0017004e Window1.Window1.VerticalScrollBar_ValueChanged%%o<Window1.Window1> + 445
etc… etc…[/quote]

a a l’air de confirmer le problme de scroll du canvas, mais j’aimerais savoir d’un point de vue purement xojo, pourquoi avec le mme code, il n’y a pas de soucis quand je passe par un fentre de validation.

Bonjour,

Je ne comprends pas parfaitement ce que tu fais mais un peu de ton code nous aiderait trs probablement beaucoup…

Preview

ok je vais essayer de poster tout a.
Laissez moi un peu de temps pour le faire avec clart.

Bonjour
Je n’ai pas la reponse a ton problme, je passe juste te donner deux conseils

01: Je termine toutes mes mthodes avec le code suivant:

Exception err
Break
//

Cela permet de ne pas se faire jeter comme un malpropre et de lire la classe d’erreur et d’avoir une ide de l’erreur

02: passe par des variables intermdiaires
scrollingCanvas.Scroll( 0 , delta , 0 , 0, scrollingCanvas.Width , scrollingCanvas.Height , True )

A remplacer par
var w as integer = scrollingCanvas.Width
var h as integer = scrollingCanvas.Height

scrollingCanvas.Scroll( 0 , delta , 0 , 0, w , h , True )

cela te permettra de verifier plus facilement les valeurs

A+

merci pour ces conseils Jean-Luc.
je vais modifier tout a.

Bonjour,
Aprs avoir tout repris zro, trac le code pas pas jusqu’au plantage. Rien n’y a fait!
J’ai donc test sur une version plus rcente de Xojo et tout est rentr dans l’ordre… Plus de plantage, tout fonctionne.