Bonjour,

Un petit problème d'enregistrement se pose à moi. Afin de ne pas utiliser de variables globales, je passe par des handles. Le souci est qu'il ne reconnait pas mon enregistrement dans ma fonction personnalisé, mais MatLab le reconnait dans l'initialisation de la figure ainsi que dans le callback.

Voici le code pour parler plus clair :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
function main
%Main GUI figure, initialization code
[...]
   data=guihandles(gcf);
   data.left_space = left_space;
   guidata(gcf,data);

   data.left_space  %OK!
end


function charger_fichier(currentObj, event)
[...]
   waitbar_handle = waitbar(1/3, 'Veuillez patientez svp');
   data=guihandles(gcbf);
   x = data.left_space  %OK!

   resize_ecran1(1);
[...]
end


function resize_ecran1(windows)
%This functions resizes first ecran mode.

switch windows
    case 1
        data = guihandles(gcbf);
        x = data.left_space  %Erreur ...
[...]
end
L'erreur généré est la suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
??? Reference to non-existent field 'left_space'.
 
Error in ==> main>resize_ecran1 at 775
        X_position = data.left_space;
 
Error in ==> main>charger_fichier at 658
                    resize_ecran1(1);
 
??? Error while evaluating uimenu Callback

MatLab reconnait pourtant la variable dans les cas précédents ... Ais-je loupé un coche quelque part ?