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 :

Création d'un fichier à nom variable


Sujet :

Interfaces Graphiques

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2011
    Messages : 115
    Points : 90
    Points
    90
    Par défaut Création d'un fichier à nom variable
    Bonjour,

    Je voudrais à partir de la fonction mkdir() créer un dossier à nom variable, je m´explique :

    1 variable X contient 3 éléments comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    X = [ date '_' nom '_' numero ]
    date, nom et numero sont 3 variables
    Mais lorsque je rentre mkdir(X) j´obtiens l´erreur suivante:

    Error using mkdir
    The filename, directory name, or volume label syntax is incorrect.
    Le problème est que cette fonction ne prend pas de variable en argument et que d´après ce que j´ai lu c´est la seule à créer un dossier
    Merci

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

    Pourrait-on avoir un aperçu du contenu de ta variable X?

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2011
    Messages : 115
    Points : 90
    Points
    90
    Par défaut
    Bonjour,

    Dateheure() est une fonction que j´ai crée pour obtenir la date ainsi que l´heure, quant à 'nom' et 'numero' ce sont des variables globales

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Date_et_heure = Dateheure();
    nom = 'test';
    numero = 1;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    X = [Date_et_heure '_' nom '_' numero];
    Je viens d´essayé de créer un dossier qui ne prends comme arguments que Date_et_heure

    et cela fonctionne correctement j´ai mon dossier qui se nomme 120207_17h09

    Mais je ne sais pas pourquoi mkdir n´accepte pas X qui est une variable globale

  4. #4
    Invité
    Invité(e)
    Par défaut
    Donc si je résume, on a:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Date_et_heure = '120207_17h09';
    nom = 'test';
    numero = 1;
     
    X = [Date_et_heure '_' nom '_' numero]
    Alors dans ce cas, attention à numero qu'il faut transformer en chaine de caractères avant la concaténation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    X = [Date_et_heure '_' nom '_' num2str(numero)]
    Remarques:

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2011
    Messages : 115
    Points : 90
    Points
    90
    Par défaut
    Merci !

    Citation Envoyé par Winjerome Voir le message
    [*]Je ne sais pas comment tu as codé ta fonction Dateheure()
    TempsString = fix(clock);

    puis

    année = num2str(TempsString(1))
    etc ...

    A la fin je me suis debrouillé pour avoir une variable du type aammjj_heurehminutes

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2011
    Messages : 115
    Points : 90
    Points
    90
    Par défaut uiputfile
    Bonjour,

    Dans la continuité de ce travail, j´aimerais sauvegarder dans mon dossier à nom variable que je viens de créer un document texte également à nom variable (Le nom de mon document est entré grâce a un 'edit text')

    j´aimerais par la suite lorsque j´appuie sur mon bouton 'save as' faire appel à la fonction uiputfile de cette façon :

    uiputfile(nom_de_mon_document,'save as',dossier_a_nom variable);

    La figure s´affiche mais sans le nom_de_mon_document en surbrillance. Par contre si j´enlève 'dossier_a_nom variable', le document à enregistrer sera afficher en surbrillance mais le chemin sélectionner pour sauvegarder mon document sera MATLAB

    Ne peut on pas avoir à la fois directement le nom du document en surbrillance ainsi que le chemin correcte ?

    PS : Dans ce cas l´utilisateur devra rentrer 2 fois le nom du document à sauvegarder ( 1 fois dans l´edit text et une fois dans la figure uiputfile )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    dossier_a_nom variable = [Dateheure '_' nom_de_mon_document '_' num2str((sprintf('%04.0f',numero)))];
     
        mkdir(dossier_a_nom variable);
     
        uiputfile(nom_de_mon_document,'Save file',dossier_a_nom variable);% dans ce cas le chemin est correcte mais 'nom_de_mon_document' n´est pas en surbrillance dans file name

  7. #7
    Invité
    Invité(e)
    Par défaut
    Il y a redondance dans le terme num2str((sprintf('%04.0f',numero))): ici NUM2STR ne sert à rien. C'est:
    • Soit sprintf('%04.0f',numero)
    • Soit num2str(numero,'%04.0f')

    Comme montré précédemment, tu peux aussi inclure tous les termes dans SPRINTF:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dossier_a_nom_variable = sprintf('%s_%s_%04.0f',Dateheure,nom_de_mon_document,numero);
    En ce qui concerne UIPUTFILE, il te faut spécifier le chemin entier dans le 3ème argument:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [FileName,PathName] = uiputfile({'*.txt','Text file'},'Save file',fullfile(dossier_a_nom_variable,nom_de_mon_document));

  8. #8
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2011
    Messages : 115
    Points : 90
    Points
    90
    Par défaut
    Merci

    PS : J´avais au début cherché un moyen de récupérer le chemin de mon dossier créer avec la fonction path puis après m´en servir comme 3 ème paramètres mais ... Merci encore je ne connaissais pas l´existence de cette fonction

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2011
    Messages : 115
    Points : 90
    Points
    90
    Par défaut
    Bonjour,

    Dans le cas d´un fichier à nom variable j´aimerais ne récupérer qu´une partie de son nom, j´ai donc une variable qui contient un char de cette forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    variable = 'donneA_donneB_donneC_donneD';
    Je voudrais ne 'récupérer' que donneC, mais le problème est que la longueur de donneA et donneB varie, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    donneA = 'exemple1' ;
    % ou 
    donneA = 'ex1';
    %etc
    Mais la longueur de donneC et de donneD non, je me suis alors dis que le plus simple serait d´utiliser :

    Mais evidement je recois l´erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Subscript indices must either be real positive integers or logicals
    Puis je me suis dis qu´avec un find :

    Mais le fait est que j´ai plusieurs '_' et malheureusement ce n´est ni le premier ni le dernier, je devrais donc récupérer l´indice de mon 2eme '_' et de mon 3eme '_' mais je bloque ...

    Quelqu'un aurait t-il une solution SVP ?

  10. #10
    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 : 40
    Localisation : France

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

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

    Avec une expression régulière tu peux récupérer tous les noms séparés par des '_':
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    regexp(variable, '[^_]+', 'match')
    Duf
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  11. #11
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 884
    Points
    52 884
    Par défaut
    Une autre solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    X = strread(variable,'%s','delimiter','_');
    ou encore :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [C,D] = strread(variable,'%*s%*s%s%s','delimiter','_');
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  12. #12
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2011
    Messages : 115
    Points : 90
    Points
    90
    Par défaut
    Bonjour Duf,

    Merci infiniment c´est exactement ce que je recherchais, je ne connaissais pas l´existence de cette function, elle est extrêmement pratique je viens de jeter un coup d´œil au help de cette dernière elle est surtout très complète, il y a énormément de possibilité (voir un peu trop pour tout assimiler )

    Merci également Dut je vais tester ta solution

    PS : la function donnée par Dut est extrêmement simple d´utilisation je la conseil attention tout même :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strread will be removed in a future version. Use textscan instead

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

Discussions similaires

  1. fichiers noms variables
    Par Guignon dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 22/04/2014, 17h02
  2. Réponses: 2
    Dernier message: 08/08/2013, 11h07
  3. [XL-2010] Message d'erreur lors de parcours de fichier + nom variable de fichier
    Par toine79 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/06/2013, 08h24
  4. Réponses: 1
    Dernier message: 04/12/2010, 17h08
  5. Réponses: 3
    Dernier message: 20/01/2007, 20h36

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