IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces Graphiques Discussion :

Enregistrement d'un fichier [Débutant]


Sujet :

Interfaces Graphiques

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 30
    Par défaut Enregistrement d'un fichier
    Bonjour
    Débutant, j'e rencontre quelques difficulté a modifier un programme.
    Je souhaiterais enregistrer un fichier. Le programme tel qu'il a été écrit était le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    [fichier,chemin]=uigetfile('*.cge','Choisissez un fichier de données');
    fichierchoisi=[chemin,fichier];
    set(handles.res,'String',fichierchoisi);
    Ayant observer que cette commande ne faisait que charger un nom de fichier, et après avoir parcouru ce forum, je l'ai modifié de cette façon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [fichier,chemin] = uiputfile('*.cge','Sauvegarder le fichier de chargement sous');
    if ~isempty(fichier)    
        saveas(newax, fullfile(chemin, fichier));
    end
    fichierchoisi=[chemin,fichier];
    set(handles.res,'String',fichierchoisi);
    Cependant, ca n'a pas l'air de fonctionner.
    Merci d'avance pour vos réponses.

  2. #2
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Par défaut
    Bonjour,

    Citation Envoyé par PantRéTroclit' Voir le message
    Cependant, ca n'a pas l'air de fonctionner.
    Pourrais-tu nous en dire un peu plus? Que se passe-t-il? Obtiens-tu un message d'erreur (si oui lequel)?

    Bonne apm,
    Duf

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 30
    Par défaut
    Dans la commande MatLab, on m'insulte avec tout ca:
    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
    nom =
     
    D:\CLEf v1.3\Chargements\
     
    ??? Error using ==> save
    Unable to write file D:\CLEf v1.3\Chargements\: file or directory does not exist.
     
    Error in ==> D:\CLEf v1.3\chargementsimple.m (OK_Callback)
    On line 481  ==>     save(nom,'mat','-ascii','-tabs')
     
    Error in ==> C:\MATLAB6p5\toolbox\matlab\uitools\gui_mainfcn.m
    On line 66  ==>         feval(varargin{:});
     
    Error in ==> D:\CLEf v1.3\chargementsimple.m
    On line 42  ==>     gui_mainfcn(gui_State, varargin{:});
     
    ??? Error while evaluating uicontrol Callback.
    l'indicateur ou je devrais voir l'adresse du fichier ainsi que le fichier, n'indique pas le nom du fichier et le fichier n'est pas enregistré.
    C'est y pas mignon!!!! Et je suis sur que la réponse est toute bête ^^!

  4. #4
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    L'erreur que tu nous montres ne correspond absolument pas au code que tu as mis dans ton premier post

    Il nous faut pour t'aider le code et le message d'erreur associé.


    Là manifestement ta variable nom est mal construite, c'est tout ce qu'on peut en dire, mais comme on ne sait pas comment tu l'a construite...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 30
    Par défaut
    Voici la construction de la variable nom...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    nom=get(handles.res,'string')
     
        save(nom,'mat','-ascii','-tabs')
    Elle se fait après:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [fichier,chemin] = uiputfile('*.cge','Sauvegarder le fichier de chargement sous');
    if ~isempty(fichier)    
        saveas(newax, fullfile(chemin, fichier));
    end
    fichierchoisi=[chemin,fichier];
    set(handles.res,'String',fichierchoisi);
    Cela me semble pourtant correct...

    >< je n'ose pas mettre tout le code, désolé si je n'en dis pas assez...

  6. #6
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Et :

    1. Visuellement tu as quoi dans l'objet de handle handle.res au moment où nom va être formé ?

    2. Dans quel callback se trouvent les lignes de code nom=.... ?
    Es-tu sur que ce callback est appelé APRES avoir correctement renseigné le nom.


    Remarque, ton 2ème code devrait s'écrire plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [fichier,chemin] = uiputfile('*.cge','Sauvegarder le fichier de chargement sous');
    fichierchoisi=fullfile(chemin,fichier);
    if ~isempty(fichier)    
        saveas(newax, fichierchoisi);
    end
    set(handles.res,'String',fichierchoisi);

  7. #7
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Par défaut
    Juste une remarque, après UIPUTFILE, il faut vérifier que la variable n'est pas nulle (et non qu'elle n'est pas vide):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    [fichier,chemin] = uiputfile('*.cge','Sauvegarder le fichier de chargement sous');
    fichierchoisi=fullfile(chemin,fichier);
    if (fichier ~= 0)    
        saveas(newax, fichierchoisi);
    end
    set(handles.res,'String',fichierchoisi);

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 30
    Par défaut
    1.Visuellement, j'ai D:\CLEf v1.3\Chargements\ dans l'objet handle.res, je ne comprend pas pourquoi il ne change pas. Quoi que cela mérite une vérification de sa définition.
    2.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [fichier,chemin] = uiputfile('*.cge','Sauvegarder le fichier de chargement sous');
    fichierchoisi=fullfile(chemin,fichier);
    if ~isempty(fichier)    
        saveas(newax, fichierchoisi);
    end
    set(handles.res,'String',fichierchoisi);
    est dans le callback parcres_Callback
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    nom=get(handles.res,'string')
     
        save(nom,'mat','-ascii','-tabs')
    est dans le callback OK_Callback
    Et j'actionne bien parcres avant OK...

    J'ai effectué vos changements de code, mais ca ne modifie malheureusement rien. Merci quand même ^^.
    Ceci dit, si vous avez d'autres codes pour enregistrer un fichier, je pourrais essayer ^^.

  9. #9
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Donc il fait exactement ce que tu lui demandes

    Que renseignes-tu dans la boite qui te demande le nom du fichier ?

    Vérifie la valeur des variables fichier et chemin dans le code où il y a le UIPUTFILE.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 30
    Par défaut
    Citation Envoyé par PantRéTroclit' Voir le message
    1.Visuellement, j'ai D:\CLEf v1.3\Chargements\ dans l'objet handle.res, je ne comprend pas pourquoi il ne change pas. Quoi que cela mérite une vérification de sa définition.
    Après vérification:
    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
    function chargementsimple_OpeningFcn(hObject, eventdata, handles, varargin)
    set(handles.res,'string',[pwd filesep,'Chargements\']);
    set(handles.res,'visible','off');
    function parcres_Callback(hObject, eventdata, handles)
    [fichier,chemin] = uiputfile('*.cge','Sauvegarder le fichier de chargement sous');
    fichierchoisi=fullfile(chemin, fichier);
    if (fichier ~= 0)    
        saveas(newax, fichierchoisi);
    end
    set(handles.res,'String',fichierchoisi);
    function OK_Callback(hObject, eventdata, handles)
    %si on demande d'enregister
    if(get(handles.checkbox1,'Value'))
    %prise du nom du fichier a enregistrer
        nom=get(handles.res,'string')
    %on sauve le chargement sous son nom
        save(nom,'mat','-ascii','-tabs')
    end
    function checkbox1_Callback(hObject, eventdata, handles)
    set(handles.res,'visible','on');
    au moment de l'enregistrement checkbox1 doit etre coché, et on doit appuyer sur parcres pour choisir le fichier. Enfin, il faut appuyer sur OK pour finir
    Et en commande...
    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
    nom =
     
    D:\CLEf v1.3\Chargements\
     
    ??? Error using ==> save
    Unable to write file D:\CLEf v1.3\Chargements\: file or directory does not exist.
     
    Error in ==> D:\CLEf v1.3\chargementsimple.m (OK_Callback)
    On line 481  ==>     save(nom,'mat','-ascii','-tabs')
     
    Error in ==> C:\MATLAB6p5\toolbox\matlab\uitools\gui_mainfcn.m
    On line 66  ==>         feval(varargin{:});
     
    Error in ==> D:\CLEf v1.3\chargementsimple.m
    On line 42  ==>     gui_mainfcn(gui_State, varargin{:});
     
    ??? Error while evaluating uicontrol Callback.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 30
    Par défaut
    Citation Envoyé par Caro-Line Voir le message
    Donc il fait exactement ce que tu lui demandes

    Que renseignes-tu dans la boite qui te demande le nom du fichier ?
    Un nom de fichier que je choisi un peu au hasard, c'est pas le but???
    Citation Envoyé par Caro-Line
    Vérifie la valeur des variables fichier et chemin dans le code où il y a le UIPUTFILE.
    Est-il possible que il y ai interversion de fichier et chemin dans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [fichier,chemin] = uiputfile('*.cge','Sauvegarder le fichier de chargement sous');
    Parce que j'avoue ne pas comprendre exactement ce que fais cette commande...

  12. #12
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Non il n'y a pas inversion puisque tu mets le nom du répertoire dans handle.res (ou tu ne le modifies pas mais là ce serait étrange).
    Donc on dirait que tu ne renseignes pas de nom de fichier.

    La commande UIPUTFILE est assez simple à comprendre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    help uiputfile
    doc uiputfile
    As-tu pensé à afficher fichier et chemin après cette commande pour vérifier ce qui était retourné (ou mieux à utiliser le debuger de MATLAB)

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 30
    Par défaut
    J'ai suivi ton conseil et j'ai demandé à afficher fichier et chemin après la commande uiputfile et je me suis rendu compte que j'avais oubié une partie du visuel sur la commande :
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    fichier =
     
    bis66mpa
     
     
    chemin =
     
    D:\CLEf v1.3\Chargement\
     
    ??? Undefined function or variable 'newax'.
     
    Error in ==> D:\CLEf v1.3\chargementsimple.m (parcres_Callback)
    On line 178  ==>     saveas(newax, fichierchoisi);
     
    Error in ==> C:\MATLAB6p5\toolbox\matlab\uitools\gui_mainfcn.m
    On line 66  ==>         feval(varargin{:});
     
    Error in ==> D:\CLEf v1.3\chargementsimple.m
    On line 42  ==>     gui_mainfcn(gui_State, varargin{:});
     
    ??? Error while evaluating uicontrol Callback.
     
     
    nom =
     
    D:\CLEf v1.3\Chargements\
     
    ??? Error using ==> save
    Unable to write file D:\CLEf v1.3\Chargements\: file or directory does not exist.
     
    Error in ==> D:\CLEf v1.3\chargementsimple.m (OK_Callback)
    On line 485  ==>     save(nom,'mat','-ascii','-tabs')
     
    Error in ==> C:\MATLAB6p5\toolbox\matlab\uitools\gui_mainfcn.m
    On line 66  ==>         feval(varargin{:});
     
    Error in ==> D:\CLEf v1.3\chargementsimple.m
    On line 42  ==>     gui_mainfcn(gui_State, varargin{:});
     
    ??? Error while evaluating uicontrol Callback.
    le nom du fichier correspond exactement a celui que j'ai donné.

  14. #14
    Expert confirmé
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Par défaut
    Il manque l'extension à ton fichier : il faudra que tu penses à la rajouter manuellement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fichierchoisi=fullfile(chemin, [fichier,'.cge'])
    Tu te rends compte que c'est difficile d'aider quand l'erreur change ?

    Bon là c'est assez clair il te dit qu'il ne connait pas la variable newax :
    D'où vient cette variable ?
    Que souhaites-tu qu'elle représente ?
    As-tu regardé l'aide de SAVEAS pour savoir ce qu'elle faisait ?

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 30
    Par défaut
    Citation Envoyé par Caro-Line Voir le message
    Il manque l'extension à ton fichier : il faudra que tu penses à la rajouter manuellement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fichierchoisi=fullfile(chemin, [fichier,'.cge'])
    Merci pour ce conseil ^^!!
    Tu te rends compte que c'est difficile d'aider quand l'erreur change ?
    vi et j'en suis désolé, je n'ai pas fais attention.

    Bon là c'est assez clair il te dit qu'il ne connait pas la variable newax :
    D'où vient cette variable ?
    Que souhaites-tu qu'elle représente ?
    As-tu regardé l'aide de SAVEAS pour savoir ce qu'elle faisait ?
    Alors, j'ai résolu ce problème assez rapidement j'ai recopié betement un morceau de code et j'avais mal compris l'utilisation de saveas. le handle que j'avais mis newax n'existait pas. de plus je me suis rendu compte de l'inutilité de la boucle if... Merci et désolée encore....

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. comment ne pas enregistrer dans le fichier log?
    Par trotters213 dans le forum MS SQL Server
    Réponses: 14
    Dernier message: 21/03/2005, 14h56
  2. [LG]Enregistrements dans un fichier
    Par ticoude dans le forum Langage
    Réponses: 1
    Dernier message: 26/11/2004, 18h33
  3. Enregistrement d'un fichier Excel par automation
    Par tiopan dans le forum Access
    Réponses: 2
    Dernier message: 04/12/2003, 19h57
  4. [LG]supprimer un enregistrement dans un fichier
    Par Marcus2211 dans le forum Langage
    Réponses: 10
    Dernier message: 17/11/2003, 00h59
  5. enregistrer dans un fichier avec une appli mdi
    Par ferrari dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/05/2002, 15h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo