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

MATLAB Discussion :

Importer des structures à partir d'une listbox [Débutant]


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2012
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 87
    Par défaut Importer des structures à partir d'une listbox
    Bonjour,
    C'est encore moi
    Voila j'ai besoin d'aide sur une partie de mon programme.
    J'ai une listbox affichant les éléments d'un dossier situé sur mon ordinateur.
    J'aimerais que quand je clique sur un élément de cette listbox, j'accède au dossier correspondant sur mon ordi et que je puisse importer sous matlab la structure présente dans ce dossier. Pour l'instant, j'ai éditer dans mon interface des lignes de code permettant de lire l'élément sélectionné dans ma listbox, mais comment dire à matlab d'aller au dossier correspondant à l'élément sélectionné et de l'importer?...
    Voici la partie de mon code correspondant à cette étape.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    set(handles.choixFibre, 'String', '');       %vide la listbox
    dirfibres = dir('C:\Users\Aristide\Desktop\Interface GUIDe\Fibres');      %adresse du dossier contenant les éléments affichés dans la listbox
    for i=1:numel(dirfibres)       % boucle permettant de lire les noms des dossier que la listbox doit afficher
        noms{i} = dirfibres(i).name;
    end
     
    set(handles.choixFibre,'string',noms);      %affichage des noms des dossiers dans la listbox
     
    guidata(hObject,handles)
     
    liste = get(handles.choixFibre, 'String');       %Lecture de l'élément sélectionné dans la listbox
    indice = get(handles.choixFibre, 'Value');
    Element_selectionne = liste{indice};

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Citation Envoyé par accessbeginner
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    set(handles.choixFibre, 'String', '');       %vide la listbox
    dirfibres = dir('C:\Users\Aristide\Desktop\Interface GUIDe\Fibres');      %adresse du dossier contenant les éléments affichés dans la listbox
    for i=1:numel(dirfibres)       % boucle permettant de lire les noms des dossier que la listbox doit afficher
        noms{i} = dirfibres(i).name;
    end
     
    set(handles.choixFibre,'string',noms);      %affichage des noms des dossiers dans la listbox
    peut s'écrire plus simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dirfibres = dir('C:\Users\Aristide\Desktop\Interface GUIDe\Fibres');
    set(handles.choixFibre,'string', {dirfibres.name});
    et guidata(hObject,handles) n'est pas nécessaire suite à ces seules instructions.

    Par contre ces lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    liste = get(handles.choixFibre, 'String');       %Lecture de l'élément sélectionné dans la listbox
    indice = get(handles.choixFibre, 'Value');
    Element_selectionne = liste{indice};
    n'ont rien à faire à la suite de ce code, elles doivent être placées dans la fonction callback choixFibre_Callback qui sera exécutée à chaque nouvelle sélection d'élément.

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2012
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 87
    Par défaut
    Merci

    Seulement je ne vois toujours pas comment importer mes structures

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2012
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 87
    Par défaut
    Bon j'ai un peu avancé. Voila j'ai fait une boucle me permettant d'ouvrir le fichier concerné.
    Je ne sais pas si ça marche, car je ne voit ni erreur ni ouverture de mon fichier dans ma fenetre de commande.

    Maintenant que j'en suis là, je me demande comment importer, après ouverture, la structure présente dans mon dossier.

    voila mon programme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function choixFibre_Callback(hObject, eventdata, handles)
    liste = get(handles.choixFibre, 'String');
    indice = get(handles.choixFibre, 'Value');
    Element_selectionne = liste{indice};
    dirfibres = dir('C:\Users\Aristide\Desktop\Interface GUIDe\Fibres');
    for i=1:numel(dirfibres)
        if isequal(dirfibres(i).name,Element_selectionne)
    fopen(dirfibres(i));
        end
    end
    J'ai bien fait une fonction choixfibres

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2012
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 87
    Par défaut
    ben je suis con, ça ne peux pas marcher avec fopen(dirfibre(i)) car dirfibre n'est pas le dossier.

    comment spécifier le dossier correspondant à dirfibre(i) alors?

    Il faudrait en fait que j'arrive a faire en sorte de mettre la valeur de "Element_selectionne" dans ma barre d'adresse.

    du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    importdata(C:\Users\Aristide\Desktop\Interface GUIDe\Fibres\Value(Element_selectionne)\fib);
    mais ben sur ça ne marche pas

  6. #6
    Invité
    Invité(e)
    Par défaut
    Une structure dans MATLAB, c'est ça. Pourrais-tu donc expliquer le mot « structure » dans ton cas ?
    Et justement dirfibre(i) est une structure qui contient les champs isdir, date, bytes, datenum et name.
    Appliquer fopen dessus, qui permet d'ouvrir un fichier pour pouvoir le lire/écrire dedans, n'a aucun sens.
    Avec le code que tu présentes, je ne comprends pas ce que tu cherches à faire précisément...

    Si tu as bien compris et résolu ce problème, intégrer le contenu de Element_selectionne ne devrait plus poser de problème.

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

Discussions similaires

  1. [Débutant] Supprimer des fichiers à partir des items sélectionnés d'une listbox
    Par Shennong dans le forum VB.NET
    Réponses: 16
    Dernier message: 12/05/2014, 18h24
  2. Réponses: 9
    Dernier message: 11/10/2010, 18h29
  3. [AC-2007] importer des données à partir d'une base de données sous access
    Par skipeemed dans le forum Access
    Réponses: 1
    Dernier message: 29/09/2010, 15h08
  4. Réponses: 2
    Dernier message: 23/01/2008, 14h07
  5. Récupérer des floats à partir d'une string
    Par hamster dans le forum SL & STL
    Réponses: 8
    Dernier message: 09/06/2005, 08h10

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