Une erreur bizarre

UniXUniX Membre
19:38 modifié dans Vos applications #1
Salut.

De temps à  autres, j'ai ce message d'erreur :
_NSReadThemeImageFromRsrc - index -8 for 'pxm#' 2630 out of range (must be between 0 and 11)

et en général une vue perso qui devient blanche ....

Ca veut dire quoi ?

Réponses

  • UniXUniX Membre
    19:38 modifié #2
    J'ai réussi à  l'isoler un peu.

    Dans mon appli, lorsque je quitte un mode d'édition, j'ai un dialogue qui demande si je veux enregistrer sur disque. Je l'affiche avec une sheet.

    NSAlert *panneauSauvegarde = [NSAlert alertWithMessageText:NSLocalizedString(@&quot;Enregistrer carte&quot;, nil) defaultButton:@&quot;Enregistrer&quot; alternateButton:@&quot;Ne pas enregistrer&quot; otherButton:nil informativeTextWithFormat:@&quot;Vos modifications seront perdues si vous n&#39;enregistrez pas.&quot;];<br />[panneauSauvegarde beginSheetModalForWindow:[controlleur fenetre] modalDelegate:controlleur didEndSelector:@selector(enregistrerCarte:returnCode:contextInfo:) contextInfo:nil];
    


    Là , ça déconne, alors que le dialogue s'affiche correctement, mais si j'envoie la méthode direct :
    [controlleur enregistrerCarte:nil returnCode:NSAlertDefaultReturn contextInfo:nil];
    

    là , ça pose pas de problème .....


    Ce qui est bizarre, c'est que ce dialogue, je l'ai depuis un moment, et j'ai jamais eu de soucis avec .....
  • elfelf Membre
    19:38 modifié #3
    Pourquoi n'utilise tu pas NSRunAlertPanel et tu prens le resultat int?
  • BruBru Membre
    19:38 modifié #4
    Tu nous donnes vraiment trop peu d'éléments pour qu'on puisse te répondre.

    .
  • UniXUniX Membre
    19:38 modifié #5
    Et bien en fait, je sais pas trop quoi dire de plus.

    Bon, un petit descriptif de l'application.
    Ma fenêtre principale contient un onglet permettant de passer du mode liste au mode edition et vice-versa.
    Lorsque je suis en mode édition, et que je veux en sortir, j'affiche cette fameuse sheet pour demander si je veux enregistrer, puis je bascule sur l'onglet du mode liste. La vue qui sort toute blanche est une vue qui est sur l'onglet mode liste.

    Encore une fois, ce qui est bizarre, c'est que ça fait un moment que cette sheet est en place, et le pb n'arrive que maintenant .... Je vois pas ce que j'ai changé qui pourrait provoquer ça .... D'autant plus que si je vire la sheet (j'enregistre direct sans demander), il n'y a plus de problème ....
  • BruBru Membre
    19:38 modifié #6
    Désolé, mais ce type d'erreur est trop générique pour qu'on puisse,
    d'un claquement de doigt, te dire : "le problème est là  !".

    L'erreur est peut-être provoquée bien en amont de ton prog, mais ne se révèle que
    lors de l'affichage de la sheet, ce qui rend difficile le debug avec seulement
    les 3 lignes de codes que tu as bien voulu nous servir.

    Dans ce cas, essaie d'isoler l'erreur en éliminant petit à  petit les portions de code en amont
    de l'appel de ta sheet pour essayer d'isoler l'origine de cette erreur.

    Là  s'arrête l'aide qu'on peut t'apporter.

    .
  • UniXUniX Membre
    19:38 modifié #7
    Bon, ce soir je vais poster toute la méthode dans laquelle est appelée cette shit .... ooups, je voulais dire sheet  ;)
  • BruBru Membre
    19:38 modifié #8
    dans 1133797565:

    ...appelée cette shit...


    T'as l'air vraiment vénere...

    .
  • UniXUniX Membre
    19:38 modifié #9
    Alors voilà , cette sheet est appelée lorsqu'on clique dans un NSTableView. Donc ci-dessous, c'est la méthode becomeFirstResponder de la sous-classe de NSTableView.

    - (BOOL)becomeFirstResponder<br />{<br />	id controlleur = [[NSApplication sharedApplication] delegate];<br />	BOOL result = [super becomeFirstResponder];<br />	[self setNeedsDisplay:YES];<br />	if([self selectedRow] != -1 &amp;&amp; [self selectedRow] != 0)<br />	{[[controlleur boutonInformations] setEnabled:YES];}<br />	<br />	if([controlleur carteEditee] != nil)<br />	{<br />		if([controlleur carteModifiee])<br />		{<br />			NSAlert *panneauSauvegarde = [NSAlert alertWithMessageText:NSLocalizedString(@&quot;Enregistrer carte&quot;, nil) defaultButton:@&quot;Enregistrer&quot; alternateButton:@&quot;Ne pas enregistrer&quot; otherButton:nil informativeTextWithFormat:@&quot;Vos modifications seront perdues si vous n&#39;enregistrez pas.&quot;];<br />			[panneauSauvegarde beginSheetModalForWindow:[controlleur fenetre] modalDelegate:controlleur didEndSelector:@selector(enregistrerCarte:returnCode:contextInfo:) contextInfo:nil];<br />			[controlleur enregistrerCarte:nil returnCode:NSAlertDefaultReturn contextInfo:nil];<br />		}<br />		else<br />		{<br />			// code si on enregistre pas ....<br />		}<br />	}<br />	return result;<br />}
    


    Et ça, c'est la méthode appelée par la sheet :
    - (void)enregistrerCarte:(NSAlert *)alert returnCode:(int)returnCode contextInfo:(void *)contextInfo<br />{<br />	if([onglet indexOfTabViewItem:[onglet selectedTabViewItem]] != 0)<br />	{<br />		if(returnCode == NSAlertDefaultReturn)<br />		{<br />			NSMutableDictionary *rootObject;<br />			rootObject = [NSMutableDictionary dictionary];<br />			[rootObject setValue:carteEditee forKey:@&quot;carte&quot;];<br />			[NSKeyedArchiver archiveRootObject:rootObject toFile:[carteListeEditee cheminAcces]];<br />			[carteListeEditee setDateModification:[NSDate date]];<br />			[carteListeEditee setTaille:[self calculerTailleDuFichier:[carteListeEditee cheminAcces]]];<br />		}<br />		[self setCarteModifiee:NO];<br />		[carteTable deselectAll:nil];<br />		[[vueInfo vueMiniature] setDessinCadreRouge:NO];<br />		[[vueInfo vueMiniature] setNeedsDisplay:YES];<br />		[boutonAjouterListe setEnabled:YES];<br />		[self setCarteEditee:nil];<br />		[self setCarteListeEditee:nil];<br />		[self changerOnglet:0];<br />		[fenetre removeChildWindow:fenetreAfficheurs];<br />		[fenetreAfficheurs orderOut:nil];<br />		[fenetre removeChildWindow:fenetreEchelle];<br />		[fenetreEchelle orderOut:nil];<br />	}<br />}<br />
    
  • BruBru Membre
    19:38 modifié #10
    Qu'est ce que tu fais, si je te dis que ton bout de prog fonctionne chez moi ...?

    Mise à  part, bien sûr, la farfelue de la sheet !

    .
  • UniXUniX Membre
    19:38 modifié #11
    Bon, je reprends ce sujet. Le problème de la sheet est là , et je ne sais pas trop comment le résoudre (pour l'instant, j'ai viré cette sheet).
    Ce qui m'embête un peu plus, c'est que de temps à  autres, j'ai un peu le même phénomène, même sans la sheet  >:( :(

    Lorsque je bascule de l'onglet du mode édition vers l'onglet du mode liste (voir un peu plus haut la description de l'application), et bien j'ai des éléments qui disparaissent  :crackboom:-
    Ca peut être des boutons, une vue, un curseur ... ou plusieurs choses combinées. Et il y a toujours ma fameuse vue qui devient blanche. Et quand je me retrouve dans cette situation, plus rien ne répond à  part les menus .....
    Pour la plupart des objets, il suffit de ranger la fenêtre dans le dock et de la ressortir pour qu'ils reviennent, mais ma vue reste désespéremment blanche ! Même en cliquant sur le bouton qui lance sa mise à  jour, il ne se passe rien ...!
    Et je n'ai pas de message d'erreur dans le log.
Connectez-vous ou Inscrivez-vous pour répondre.