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

 C++ Discussion :

Recherche un moyen unique d'identifier un fichier.


Sujet :

C++

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 142
    Points : 109
    Points
    109
    Par défaut Recherche un moyen unique d'identifier un fichier.
    Bonjour, je pense que j'ai posté dans la mauvaise partie de forum mais je ne sais vraiment pas ou poster cette question, je choisis donc celle associée au langage que j utilise.

    Je cherche à implementer un système d'include de fichiers entre eux en evitant les inclusions recursives...
    J'ai un 'plan d attaque' :
    1) construire un graphe orienté dont le lien A->B indique que le fichier A inclus le fichier B.
    2) chercher les boucles ou cycles (je vais appeler ca un schmurz dans la suite, je ne connais plus le terme : je n'ai pas bien revu ma théorie des graphes ces temps ci).
    3) Briser ces schmurz.
    4) parcourir l'arbre obtenu pour enfin inclure les fichiers.
    Seulement je tombe sur un 'hic' : je ne sais pas comment faire pour identifier un fichier de manière unique, le chemin relatif est clairement une mauvaise idée vu que "file1" et "rep1/../file1" sont en fait le même fichier...
    Le chemin absolu pourrait convenir mais me semble un peu trop lourdingue et consommateur...
    Y aurait il un gentil int caché quelque part auquel je pourrais avoir accés et qui permettrait d identifier un fichier de manière unique ?

    N.B. : J'aimerais que mon code soit portable sur les différents systèmes usuels, donc évidemment la question se pose pour windows, linux, os x...

    N.B.Bis : vous remarquerez sans mal que c'est un premier jet, le 'plan d'attaque' est loin d'être définitif... cependant le problème restera sans doute le même.

  2. #2
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 612
    Points : 30 612
    Points
    30 612
    Par défaut
    Salut,

    Si tu disposes de C++11, il existe le foncteur hash (disponible dans l'espace de noms std par inclusion du fichier d'en-tête <functional> )qui permet de calculer une somme de hashage de manière automatique. Il te "suffit" donc de calculer cette somme de hashage pour le chemin complet (dossier(s) + noms de fichier + extension) pour que chaque fichier soit identifié de manière strictement unique.

    Notes que ces informations (dossier(s) + nom de ficher + extension) permettent également d'identifier à chaque fois un fichier unique quand elles sont représentées sous la forme d'une chaine de caractères. Malheureusement, la comparaison des chaines de caractères (car on ne peut ignorer le fait qu'un dossier risque de contenir plusieurs fichiers, ce qui obligerait à comparer à chaque fois les même caratères utilisés pour le dossier pour la comparaison) sont particulièrement lentes à s'effectuer par rapport à la comparaison de valeurs entières.

    D'un autre coté, le fait de calculer la somme de hashage à chaque fois que tu es confronté à un nom de fichier prend également pas mal de temps. Il y aura donc sans doute intérêt à prévoir "un moyen" de maintenir l'équivalence entre les sommes de hashages déjà calculées et les fichiers auxquels elles correspondent, afin d'éviter trop de calcul inutiles
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 142
    Points : 109
    Points
    109
    Par défaut
    Zut...
    J'esperais que les OS maintenaient une telle liste de nombres et qu on pouvait y avoir acces...
    Déçu je suis.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 963
    Points
    32 963
    Billets dans le blog
    4
    Par défaut
    Salut,

    Je cherche à implementer un système d'include de fichiers entre eux en evitant les inclusions recursives...
    Ca s'appelle pas un include guard ça ?

    Sinon je suppose qu'il existe des lib pour avoir le path absolu complet d'un fichier, suivi d'un md5 et hop. En Python en tous cas c'est l'affaire de 2 lignes.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  5. #5
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Les OS ont des "pointeurs de blocs" au fond de leurs systèmes de fichiers. Mais c'est parfaitement inutilisables pour toi.

    Il peut suffire d'avoir une map, ou quelque chose comme cela (peut-être un boost::bimap)
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2014
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 142
    Points : 109
    Points
    109
    Par défaut
    Merci pour vos réponses. Je marque le fil comme résolu.

    @Bousk :
    Je ne connaissais pas le nom, ce genre de choses est en effet déjà proposé par les IDE que j'ai utilisé.
    Cependant, je cherche à le faire pendant l'execution de mon programme (un interpreteur pour un langage dont je crois bien avoir besoin et que je veux le plus simple d'utilisation, ce qui du coup complique (un peu, beaucoup,...) sa programmation...).

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/11/2009, 12h42
  2. Recherche d'un module Java : Upload de fichiers
    Par pekka77 dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 19/12/2008, 19h22
  3. Recherche le nombre de mots dans un fichier
    Par peppena dans le forum Linux
    Réponses: 2
    Dernier message: 19/04/2006, 10h46
  4. [VBA] Recherche d'une valeur dans un autre fichiers puis
    Par Nicos77 dans le forum Général VBA
    Réponses: 11
    Dernier message: 24/03/2006, 11h24
  5. Recherche d'application web (PHP) :: Gestion de fichiers
    Par KissCoolMan dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 08/01/2006, 15h43

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