Bonjour,

je suis nouveau et débutant dans l'utilisation de Matlab. J'ai cherché sur votre forum et dans l'aide de Matlab mais je n'ai pas réussi à trouver la réponse à mon problème.

En fait, l'IHM réalisée me permet de charger des fichiers à l'aide de uigetfile pour ensuite être traités.

Le problème est que je dois vérifier les extensions de fichiers et le fait que l'utilisateur a charger les fichiers ou non. Pour cela j'utilise une boucle while qui vérifie, à l'aide de flag, que l'utilisateur a bien charger les bon types de fichiers.

C'est là qu'est mon problème, lorsque l'utilisateur sélectionne les bons types de fichiers cela fonctionne mais lorsque je fait du dysfonctionnel en sélectionnant un ou plusieurs mauvais fichiers ou en ne chargeant rien je rentre dans une boucle infini qui et je suis obliger de stoper Matlab...

J'ai essayer de mettre un waitfor en début de boucle afin d'attendre un clic sur le bouton qui permet de lancer la vérification mais cela ne fait rien...

Je vous met une partie du code concerné :
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
 
    function affich_suivi(varargin)
        % Initialisation des flags de vérification
        flag_nom_mdl = 0; flag_nom_m = 0; flag_nom_xls = 0;
 
 
        while ((flag_nom_mdl ~= 1)||(flag_nom_m ~= 1)||(flag_nom_xls ~= 1))
            %Définition des variables d'entrées
            nom_mdl_entree_ut = get(nom_mdl,'string');
            nom_calib_entree_ut = get(nom_m,'string');
            nom_dico_entree_ut = get(nom_xls,'string');
 
            % Vérification sur le fichier .mdl
            if ((strcmp(nom_mdl_entree_ut,'') == 1)||(strcmp(nom_mdl_entree_ut,num2str(0)) == 1 ))
                set(commentaire,'String','Veuillez sélectionner le modèle.');
                flag_nom_mdl = 0; % pas de modèle sélectionné
            else
                if (strcmp('.mdl',nom_mdl_entree_ut(end-3:end)) == 0)
                    set(commentaire,'String','Veuillez sélectionner le modèle au format .mdl');
                    flag_nom_mdl = 0; % mauvais format pour le modèle
                else
                    flag_nom_mdl = 1; % modèle sélectionné au bon format
                    set(commentaire,'String','Modèle sélectionné');
                end
            end
        end
Il y a 3 "flags" car 3 fichiers à tester. Ce qui se passe c'est que si l'utilisateur ne fait pas les bons choix du premier coup, les flags concernés sont à 0 tout le temps d'où la boucle infini...

Je voudrais qu'une fois rentré dans cette boucle, il y ait une attente d'un appui sur le bouton de lancement qui est défini comme cela :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
bouton_lancement = uicontrol('Parent',fond,...
    'Style','Pushbutton',...
    'FontWeight','bold',...
    'String','Lancer la vérification',...
    'Units','normalized',...
    'Position',[.325 .01 .35 .05],...
    'tag','lancement',...
    'Callback',@affich_suivi);
Les set me permettent d'afficher dans une fenêtre de commentaire pour avoir un suivi de ce qui se passe.

Si vous pouviez m'indiquer s'il est possible et si oui, m'orienter un peu cela m'aiderait beaucoup!

Bonne journée et merci par avance