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

MFC Discussion :

[débutant]Génération d'identifiant


Sujet :

MFC

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 41
    Points : 45
    Points
    45
    Par défaut [débutant]Génération d'identifiant
    Bonjor à tous,

    je souhaite générer des identifiants uniques (du moins en théorie) pour identifier mes objets dans un programme.

    Il semble exister une classe pouvant le faire (VCWizCtl) mais impossible de la trouver avec VC++ 7.

    Est-ce qu'il existe une autre solution que de recoder un générateur à la main ?

    Merci

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 28
    Points : 22
    Points
    22
    Par défaut
    Salut, j'ai essayé de te bidouiller un code, malheurerusment, il plante sur mon ordi à la ligne 12. mais bon, si tu arrives à modifier l'erreur, il est a toi...

    voici mon code :
    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
    	int iLongueurLogin;
    	int iCount;
    	int iCaractere;
    	CString strLogin;
    	CString strAddLogin;
    	srand((unsigned)time(NULL));
    	iLongueurLogin = (rand() % 8) + 3; // Le login a une longueur de 10 maximum et de 2 minimum
    	for(iCount = 1 ; iCount < iLongueurLogin ; iCount++)
    	{
    		iCaractere = rand() % 255;
    		strAddLogin.Format("%s", iCaractere); // le prog plante ici
    		strLogin.Format("%s%s", strLogin, strAddLogin);
    	}
    	// Le Login se trouve maintenant dans la variable strLogin
    	MessageBox(strLogin);
    Sinon, je te conseille de chercher si il n'existe pas une fonction du genre IntToStr() pour remédier à se problème (ligne 12)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 28
    Points : 22
    Points
    22
    Par défaut
    Salut, j'ai essayé de te bidouiller un code, malheurerusment, il plante sur mon ordi à la ligne 12. mais bon, si tu arrives à modifier l'erreur, il est a toi...

    voici mon code :
    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
    	int iLongueurLogin;
    	int iCount;
    	int iCaractere;
    	CString strLogin;
    	CString strAddLogin;
    	srand((unsigned)time(NULL));
    	iLongueurLogin = (rand() % 8) + 3; // Le login a une longueur de 10 maximum et de 2 minimum
    	for(iCount = 1 ; iCount < iLongueurLogin ; iCount++)
    	{
    		iCaractere = rand() % 255;
    		strAddLogin.Format("%s", iCaractere); // le prog plante ici
    		strLogin.Format("%s%s", strLogin, strAddLogin);
    	}
    	// Le Login se trouve maintenant dans la variable strLogin
    	MessageBox(strLogin);
    Sinon, je te conseille de chercher si il n'existe pas une fonction du genre IntToStr() pour remédier à se problème (ligne 12)

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 41
    Points : 45
    Points
    45
    Par défaut
    Sinon, je te conseille de chercher si il n'existe pas une fonction du genre IntToStr() pour remédier à se problème (ligne 12)
    essaye la fonction itoa, tranforme un int en char, je sais pas si ça peut t'aider. Mais bon, ce que je voudrais c'est plus un truc du style des Uuid (RTC.h) mais j'arrive pas à m'en servir. S'il fallait générer la clé aléatoirement ce que je ferais serait plutôtde générer un longue (32 char) clé, avec un générateur aléatoire réinitialisé à chaque fois. Mais je n'ai pas envie de réinventer le fil à couper le beurre, donc s'il existe un composant qui le fait tout seul ce serait mieux.

    Merci de ta réponse

  5. #5
    Membre habitué Avatar de BertrandA
    Inscrit en
    Août 2003
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 170
    Points : 197
    Points
    197
    Par défaut
    Il y a ça, je ne sais pas si ça satisfait tes besoins :
    • AllocateLocallyUniqueId()
      CoCreateGuid()

    Le 2ème, c'est ce qui est utilisé pour garantir l'unicité d'un composant COM.

  6. #6
    Membre habitué Avatar de BertrandA
    Inscrit en
    Août 2003
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 170
    Points : 197
    Points
    197
    Par défaut
    Il y a ça, je ne sais pas si ça satisfait tes besoins :
    • AllocateLocallyUniqueId()
      CoCreateGuid()

    Le 2ème, c'est ce qui est utilisé pour garantir l'unicité d'un composant COM.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 41
    Points : 45
    Points
    45
    Par défaut
    Merci, la seconde solution à l'ai de fonctioner parfaitement...

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 41
    Points : 45
    Points
    45
    Par défaut
    Merci, la seconde solution à l'ai de fonctioner parfaitement...

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 41
    Points : 45
    Points
    45
    Par défaut
    Merci à tous,

    voilà ma solution permettant de générer une chaine de caractères à priori unique tenant lieu d'identifiant :

    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
     
    GUID guid;
    char buffer[10];
    char * curr;
    int i, j = 0;
    char trID[30];
     
    CoCreateGuid( &guid );
     
    ultoa( guid.Data1, buffer, 16 );
    curr = buffer;
    while( *curr != '\0' )
      trID[j++] = *(curr++);
     
    trID[j++] = '-';
     
    ltoa( guid.Data2, buffer, 16 );
    curr = buffer;
    while( *curr != '\0' )
      trID[j++] = *(curr++);
     
    trID[j++] = '-';
     
    ltoa( guid.Data3, buffer, 16 );
    curr = buffer;
    while( *curr != '\0' )
      trID[j++] = *(curr++);
     
    trID[j] = '\0';
    encore merci
    Tarrke

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 08/06/2007, 00h18
  2. Réponses: 16
    Dernier message: 25/05/2007, 15h51
  3. [débutant] probleme d' identifiant
    Par sly3333 dans le forum Hibernate
    Réponses: 1
    Dernier message: 13/12/2006, 17h36
  4. [VB6]Génération d'identifiant à partir d'une table
    Par crashyear dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 26/01/2006, 17h20
  5. [Débutant] génération d'un EJB avec GenIc
    Par Stessy dans le forum JOnAS
    Réponses: 65
    Dernier message: 31/01/2005, 10h50

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