Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Obtenir un ID unique

7 réponses
Avatar
Ledev
Bonjour,

Voilà, mon but est d'obtenir un ID unique a chaque fois que je le
génere(genre une fonction qui renvoie a chaque fois une valeur de type
string différente des autres fois).

J'ai pensez:
- passez par une Base de donné, mais le probléme, c'est que je n'est rien
a indexez concernant cette ID, il faut juste qu'il soit différent a chaque
fois(je ne vais pas crée des enregistrements vide juste pour récupérer
l'index).
-ou encore les enregistrer dans un fichier texte, en générer un au hasard
et vérifier qu'il n'est pas dans le fichier(mais sa risque, au fil du temps,
de devenir de plus en plus long, et le fichier de grossir).
-ou encore générer un trés long ID(sur 1024Bits par exemple), de sorte a
que les chances que 2 ID identiques soit considérer comme quasi
impossible(et puis si sa se produit, il n'y a rien de dramatique, juste
qu'il faudrai éviter au maximum).

Laquel serrait, selon-vous, la meilleurs sollution? Ou mieux encore,
existe-t-il une Fonction VB, ou une API, qui le permettent(comme dans le
.Net Framework, il me semble que c'est une classe qui s'appelle GUID mais je
suis pas sûr. Mais bien sûr mon appli ne doit pas être dépendente du .Net
Framework.).
Tiens ba dailleurs, comment microsoft l'a programmez dans le .Net Framework?

Merci de votre aide, a+

7 réponses

Avatar
François Picalausa
Bonjour/soir,

Voici un bout de code permettant de récupérer un GUID sous forme de chaine:
Private Type GUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(7) As Byte
End Type

Private Declare Function CoCreateGuid Lib "OLE32.DLL" (pGuid As GUID) As
Long
Private Declare Function StringFromGUID2 Lib "OLE32" (ByRef lpGUID As GUID,
ByVal lpszBuff As Long, ByVal intcb As Long) As Long
Private Const S_OK = &H0

Public Function GetGUID() As String
Dim uuid As GUID

If CoCreateGuid(uuid) = S_OK Then
GetGUID = String(38, 0)
StringFromGUID2 uuid, StrPtr(GetGUID), 39&
End If
End Function

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


Ledev wrote:
Bonjour,

Voilà, mon but est d'obtenir un ID unique a chaque fois que je le
génere(genre une fonction qui renvoie a chaque fois une valeur de type
string différente des autres fois).

J'ai pensez:
- passez par une Base de donné, mais le probléme, c'est que je
n'est rien a indexez concernant cette ID, il faut juste qu'il soit
différent a chaque fois(je ne vais pas crée des enregistrements vide
juste pour récupérer l'index).
-ou encore les enregistrer dans un fichier texte, en générer un au
hasard et vérifier qu'il n'est pas dans le fichier(mais sa risque, au
fil du temps, de devenir de plus en plus long, et le fichier de
grossir). -ou encore générer un trés long ID(sur 1024Bits par
exemple), de sorte a que les chances que 2 ID identiques soit
considérer comme quasi impossible(et puis si sa se produit, il n'y a
rien de dramatique, juste qu'il faudrai éviter au maximum).

Laquel serrait, selon-vous, la meilleurs sollution? Ou mieux encore,
existe-t-il une Fonction VB, ou une API, qui le permettent(comme dans
le .Net Framework, il me semble que c'est une classe qui s'appelle
GUID mais je suis pas sûr. Mais bien sûr mon appli ne doit pas être
dépendente du .Net Framework.).
Tiens ba dailleurs, comment microsoft l'a programmez dans le .Net
Framework?

Merci de votre aide, a+


Avatar
Ledev
Merci de ton aide, tu viens de me sauvé la vie ;-)
a+
Avatar
Ledev
Heu, juste une dérniere question, comment il fait pour être sûr que c'est un
ID vraiment unique a chaque fois?

Encore merci, a+

"François Picalausa" a écrit dans le message de news:

Bonjour/soir,

Voici un bout de code permettant de récupérer un GUID sous forme de


chaine:
Private Type GUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(7) As Byte
End Type

Private Declare Function CoCreateGuid Lib "OLE32.DLL" (pGuid As GUID) As
Long
Private Declare Function StringFromGUID2 Lib "OLE32" (ByRef lpGUID As


GUID,
ByVal lpszBuff As Long, ByVal intcb As Long) As Long
Private Const S_OK = &H0

Public Function GetGUID() As String
Dim uuid As GUID

If CoCreateGuid(uuid) = S_OK Then
GetGUID = String(38, 0)
StringFromGUID2 uuid, StrPtr(GetGUID), 39&
End If
End Function

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


Ledev wrote:
> Bonjour,
>
> Voilà, mon but est d'obtenir un ID unique a chaque fois que je le
> génere(genre une fonction qui renvoie a chaque fois une valeur de type
> string différente des autres fois).
>
> J'ai pensez:
> - passez par une Base de donné, mais le probléme, c'est que je
> n'est rien a indexez concernant cette ID, il faut juste qu'il soit
> différent a chaque fois(je ne vais pas crée des enregistrements vide
> juste pour récupérer l'index).
> -ou encore les enregistrer dans un fichier texte, en générer un au
> hasard et vérifier qu'il n'est pas dans le fichier(mais sa risque, au
> fil du temps, de devenir de plus en plus long, et le fichier de
> grossir). -ou encore générer un trés long ID(sur 1024Bits par
> exemple), de sorte a que les chances que 2 ID identiques soit
> considérer comme quasi impossible(et puis si sa se produit, il n'y a
> rien de dramatique, juste qu'il faudrai éviter au maximum).
>
> Laquel serrait, selon-vous, la meilleurs sollution? Ou mieux encore,
> existe-t-il une Fonction VB, ou une API, qui le permettent(comme dans
> le .Net Framework, il me semble que c'est une classe qui s'appelle
> GUID mais je suis pas sûr. Mais bien sûr mon appli ne doit pas être
> dépendente du .Net Framework.).
> Tiens ba dailleurs, comment microsoft l'a programmez dans le .Net
> Framework?
>
> Merci de votre aide, a+




Avatar
Bismark Prods
J'ai vu merci , mais je t'avoue que je n'y crois pas du tout ...

En effet, ils disent que nul part cela ne peux etre identique mais cela
uniquement dans un système hierarchisée, car sorti de son contexte, il peut
très y avoir 2 fois le meme sur des réseaux séparés. Et si un jour il se
rassemble il y aura un problème non ?

"Zoury" a écrit dans le message de
news:
Yep! :O/

regarde la section Remarks sur la MSDN..
http://msdn.microsoft.com/library/en-us/com/htm/cmf_a2c_05r8.asp

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/


Avatar
Ledev
> En effet, ils disent que nul part cela ne peux etre identique mais cela
uniquement dans un système hierarchisée, car sorti de son contexte, il


peut
très y avoir 2 fois le meme sur des réseaux séparés. Et si un jour il se
rassemble il y aura un problème non ?



Bin a se qu'il disent il est strictement impossible de retrouvé 2 fois la
même chose, même sur des machines distinctes sans aucune liaison. Je ne
comprend pas bien comment sa marche, mais il doivent plus se basé sur la loi
de probabilité que sur quoi que se soit d'autre.
Avatar
Bismark Prods
On n'a pas du lire le meme texte ... Il disent qu'il ne peut pas y avoir 2
memes combinaisons car ils vérifient que cette dernière n'existe pas déjà.
Tu devrais aller lire la doc sur UUID !

"Ledev" a écrit dans le message de
news:e$
> En effet, ils disent que nul part cela ne peux etre identique mais cela
> uniquement dans un système hierarchisée, car sorti de son contexte, il
peut
> très y avoir 2 fois le meme sur des réseaux séparés. Et si un jour il se
> rassemble il y aura un problème non ?

Bin a se qu'il disent il est strictement impossible de retrouvé 2 fois la
même chose, même sur des machines distinctes sans aucune liaison. Je ne
comprend pas bien comment sa marche, mais il doivent plus se basé sur la


loi
de probabilité que sur quoi que se soit d'autre.




Avatar
Ledev
"Bismark Prods" a écrit dans le message de news:

On n'a pas du lire le meme texte ... Il disent qu'il ne peut pas y avoir 2
memes combinaisons car ils vérifient que cette dernière n'existe pas déjà.
Tu devrais aller lire la doc sur UUID !



Oui je viens d'y allez, et il précise bien qu'il vérifie au niveau du noeud
heternet et qu'il peut se répeter sur des points différents, et qu'il est
donc conseillez de l'utilisée pour crée des ID locaux.

a+