OVH Cloud OVH Cloud

[WD8] DonneIdentifiant

24 réponses
Avatar
Phil
Bonjour,

Concernant la fonction DonneIdentifiant(), le manuel et l'aide en ligne
mentionnent
«Calcule un identifiant unique de type entier pour un exécutable donné.».

J'avais compris par là que si on exécute le même .exe - soit du même poste
en multi-instance ou en réseau en cliquant sur le .exe de l'application,
l'identifiant serait incrémenté séquentiellement quel que soit le poste ou
l'instance qui provoque l'incrémentation.

Mais ce n'est pas ce qui se passe; chaque incrémentation se fait
individuellement dans chaque instance.

Y a-t-il un truc pour obtenir que l'incrémentation de DonneIdentifiant()
soit gérée par un .exe unique et se répercute sur chaque instance qui
appelle la fonction? En d'autres mots, que chaque incrémentation se
répercute ou soit vue de toutes les instances ou tous les postes branchés à
la même application?

--
Cordialement,

Réal Philippon

10 réponses

1 2 3
Avatar
STASZEWSKI André
Phil wrote:

Je constate aussi que la solution suivante (que j'aime bien)
MonId = remplace(NetAdresseIP(), ".", "") + DonneIdentifiant()
expose à des exceptions très rares, mais possible quand meme.

Tout cela pour conclure que je crois que la meilleure solution
possible est de faire une petite Procédure/Fonction pour générer un
nom de fichier temporaire qui sera unique et fiable dans tous les cas
sans aucune exception d'environnement ou autre.

FONCTION NomUnique()
InitHasard()
FicTemp est une chaîne
I est un entier
POUR I=1 A 8;FicTemp=FicTemp+Caract(Hasard(65,90));FIN
RENVOYER FicTemp

Cette fonction génère un nom (à gauche du .fic ou autre) qui offre
208 827 064 576 combinaisons possibles, alors on oublie les risques
de duplication de noms et le problème est réglé.

Merci à tous pour vos réponses.



Salut Réal,

Pourquoi ne pas utiliser la date et l'heure système (avec les centième de
secondes) pour générer le nom de ton fichier ?
Je te promet qu'il sera unique pour l'éternité !
--
Cordialement,
André STASZEWSKI
Photo Visu version 3.0 dispo sur www.PlaneteDev.fr.st
Contact ; Cliquez sur ce lien : http://cerbermail.com/?OT0Wnwyzph
Avatar
Phil
"STASZEWSKI André" a écrit dans le message de
news:cf3389$emo$
Phil wrote:
>
> Je constate aussi que la solution suivante (que j'aime bien)
> MonId = remplace(NetAdresseIP(), ".", "") + DonneIdentifiant()
> expose à des exceptions très rares, mais possible quand meme.
>
> Tout cela pour conclure que je crois que la meilleure solution
> possible est de faire une petite Procédure/Fonction pour générer un
> nom de fichier temporaire qui sera unique et fiable dans tous les cas
> sans aucune exception d'environnement ou autre.
>
> FONCTION NomUnique()
> InitHasard()
> FicTemp est une chaîne
> I est un entier
> POUR I=1 A 8;FicTemp=FicTemp+Caract(Hasard(65,90));FIN
> RENVOYER FicTemp
>
> Cette fonction génère un nom (à gauche du .fic ou autre) qui offre
> 208 827 064 576 combinaisons possibles, alors on oublie les risques
> de duplication de noms et le problème est réglé.
>
> Merci à tous pour vos réponses.

Salut Réal,

Pourquoi ne pas utiliser la date et l'heure système (avec les centième de
secondes) pour générer le nom de ton fichier ?
Je te promet qu'il sera unique pour l'éternité !
--
Cordialement,
André STASZEWSKI
Photo Visu version 3.0 dispo sur www.PlaneteDev.fr.st
Contact ; Cliquez sur ce lien : http://cerbermail.com/?OT0Wnwyzph


=================================================
Salut André,

Bien essayé comme idée... mais, comme je mentionnais dans mon précedent
message lorsque je disais que fFichierTemp() ne fonctionne pas parce que 3
noms de fichiers créés en séquence donnera 3 noms identiques, de la meme
facon HeureSys() appellé 3 fois donnera la meme heure incluant les centiemes
de secondes.
Donc, pas de noms uniques à tous les coups de cette facon.

F1,F2,F3 sont des chaines
F1ÚteSys()+HeureSys()
F2ÚteSys()+HeureSys()
F3ÚteSys()+HeureSys()

F1, F2 et F3 sont tous identiques.

Cordialement,

Réal Philippon
Programmation Ultra Ltée -o- www.ultra.ca
L'informatique sur mesure depuis plus de 24 ans
Avatar
Georges PEYRE
Bonjour,

Phil a utilisé son clavier pour écrire :
"STASZEWSKI André" a écrit dans le message de
news:cf3389$emo$
Phil wrote:

Je constate aussi que la solution suivante (que j'aime bien)
MonId = remplace(NetAdresseIP(), ".", "") + DonneIdentifiant()
expose à des exceptions très rares, mais possible quand meme.

Tout cela pour conclure que je crois que la meilleure solution
possible est de faire une petite Procédure/Fonction pour générer un
nom de fichier temporaire qui sera unique et fiable dans tous les cas
sans aucune exception d'environnement ou autre.

FONCTION NomUnique()
InitHasard()
FicTemp est une chaîne
I est un entier
POUR I=1 A 8;FicTemp=FicTemp+Caract(Hasard(65,90));FIN
RENVOYER FicTemp

Cette fonction génère un nom (à gauche du .fic ou autre) qui offre
208 827 064 576 combinaisons possibles, alors on oublie les risques
de duplication de noms et le problème est réglé.

Merci à tous pour vos réponses.



Salut Réal,

Pourquoi ne pas utiliser la date et l'heure système (avec les centième de
secondes) pour générer le nom de ton fichier ?
Je te promet qu'il sera unique pour l'éternité !
--
Cordialement,
André STASZEWSKI
Photo Visu version 3.0 dispo sur www.PlaneteDev.fr.st
Contact ; Cliquez sur ce lien : http://cerbermail.com/?OT0Wnwyzph


================================================= >
Salut André,

Bien essayé comme idée... mais, comme je mentionnais dans mon précedent
message lorsque je disais que fFichierTemp() ne fonctionne pas parce que 3
noms de fichiers créés en séquence donnera 3 noms identiques, de la meme
facon HeureSys() appellé 3 fois donnera la meme heure incluant les centiemes
de secondes.
Donc, pas de noms uniques à tous les coups de cette facon.

F1,F2,F3 sont des chaines
F1ÚteSys()+HeureSys()
F2ÚteSys()+HeureSys()
F3ÚteSys()+HeureSys()

F1, F2 et F3 sont tous identiques.



sauf si ...

NDif est un entier sur 1 octet
NDifC est un caractère
.......
SI NDif > 9 ALORS NDif = 0
NDifC = NDif
Fn= = DateSys()+HeureSys()+NDifC

Cordialement

--
Elle est pas belle la vie ?
Avatar
Georges PEYRE
(supersedes )

Bonjour,

Phil a utilisé son clavier pour écrire :
"STASZEWSKI André" a écrit dans le message de
news:cf3389$emo$
Phil wrote:

Je constate aussi que la solution suivante (que j'aime bien)
MonId = remplace(NetAdresseIP(), ".", "") + DonneIdentifiant()
expose à des exceptions très rares, mais possible quand meme.

Tout cela pour conclure que je crois que la meilleure solution
possible est de faire une petite Procédure/Fonction pour générer un
nom de fichier temporaire qui sera unique et fiable dans tous les cas
sans aucune exception d'environnement ou autre.

FONCTION NomUnique()
InitHasard()
FicTemp est une chaîne
I est un entier
POUR I=1 A 8;FicTemp=FicTemp+Caract(Hasard(65,90));FIN
RENVOYER FicTemp

Cette fonction génère un nom (à gauche du .fic ou autre) qui offre
208 827 064 576 combinaisons possibles, alors on oublie les risques
de duplication de noms et le problème est réglé.

Merci à tous pour vos réponses.



Salut Réal,

Pourquoi ne pas utiliser la date et l'heure système (avec les centième de
secondes) pour générer le nom de ton fichier ?
Je te promet qu'il sera unique pour l'éternité !
-- Cordialement,
André STASZEWSKI
Photo Visu version 3.0 dispo sur www.PlaneteDev.fr.st
Contact ; Cliquez sur ce lien : http://cerbermail.com/?OT0Wnwyzph


================================================= >
Salut André,

Bien essayé comme idée... mais, comme je mentionnais dans mon précedent
message lorsque je disais que fFichierTemp() ne fonctionne pas parce que 3
noms de fichiers créés en séquence donnera 3 noms identiques, de la meme
facon HeureSys() appellé 3 fois donnera la meme heure incluant les
centiemes
de secondes.
Donc, pas de noms uniques à tous les coups de cette facon.

F1,F2,F3 sont des chaines
F1ÚteSys()+HeureSys()
F2ÚteSys()+HeureSys()
F3ÚteSys()+HeureSys()

F1, F2 et F3 sont tous identiques.



sauf si ...

NDif est un entier sur 1 octet
NDifC est un caractère
.......
NDif++
SI NDif > 9 ALORS NDif = 0
NDifC = NDif
Fn= = DateSys()+HeureSys()+NDifC

Cordialement

--
Elle est pas belle la vie ?
Avatar
STASZEWSKI André
Phil wrote:
"STASZEWSKI André" a écrit dans le message de
news:cf3389$emo$
Phil wrote:

Je constate aussi que la solution suivante (que j'aime bien)
MonId = remplace(NetAdresseIP(), ".", "") + DonneIdentifiant()
expose à des exceptions très rares, mais possible quand meme.

Tout cela pour conclure que je crois que la meilleure solution
possible est de faire une petite Procédure/Fonction pour générer un
nom de fichier temporaire qui sera unique et fiable dans tous les
cas sans aucune exception d'environnement ou autre.

FONCTION NomUnique()
InitHasard()
FicTemp est une chaîne
I est un entier
POUR I=1 A 8;FicTemp=FicTemp+Caract(Hasard(65,90));FIN
RENVOYER FicTemp

Cette fonction génère un nom (à gauche du .fic ou autre) qui offre
208 827 064 576 combinaisons possibles, alors on oublie les risques
de duplication de noms et le problème est réglé.

Merci à tous pour vos réponses.



Salut Réal,

Pourquoi ne pas utiliser la date et l'heure système (avec les
centième de secondes) pour générer le nom de ton fichier ?
Je te promet qu'il sera unique pour l'éternité !
--
Cordialement,
André STASZEWSKI
Photo Visu version 3.0 dispo sur www.PlaneteDev.fr.st
Contact ; Cliquez sur ce lien : http://cerbermail.com/?OT0Wnwyzph


================================================= >
Salut André,

Bien essayé comme idée... mais, comme je mentionnais dans mon
précedent message lorsque je disais que fFichierTemp() ne fonctionne
pas parce que 3 noms de fichiers créés en séquence donnera 3 noms
identiques, de la meme facon HeureSys() appellé 3 fois donnera la
meme heure incluant les centiemes de secondes.
Donc, pas de noms uniques à tous les coups de cette facon.

F1,F2,F3 sont des chaines
F1ÚteSys()+HeureSys()
F2ÚteSys()+HeureSys()
F3ÚteSys()+HeureSys()

F1, F2 et F3 sont tous identiques.



Bonjour Réal,

Normal, il faut écrire :
F1,F2,F3 sont des chaînes
F1 = DateSys()+HeureSys()
Multitache(1)
F2 = DateSys()+HeureSys()
Multitache(1)
F3 = DateSys()+HeureSys()
Trace(F1,F2,F3)

Il faut provoquer un léger retard entre chaque ordre, peut importe la durée
donc autant prendre la plus petite. Mais ainsi tu es certain d'avoir une
chaine unique sur le passé et sur l'avenir !
--
Cordialement,
André STASZEWSKI
Photo Visu version 3.0 dispo sur www.PlaneteDev.fr.st
Contact ; Cliquez sur ce lien : http://cerbermail.com/?OT0Wnwyzph
Avatar
Romain PETIT
STASZEWSKI André a écrit :

Il faut provoquer un léger retard entre chaque ordre, peut importe la durée
donc autant prendre la plus petite. Mais ainsi tu es certain d'avoir une
chaine unique sur le passé et sur l'avenir !



Hé non !
La loi de Murphy est toujours là !
Imagine que ton utilisateur mette à jour au même moment l'heure du
système...

Pour garantir un identifiant unique (on appelle ça GUID -pour Globally
Unique Identifier-), il existe des API spécifiques :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/rpc/rpc/guid.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/com/htm/cmf_a2c_05r8.asp

Voici un exemple de création de GUID en W-langage qui *garanti* que
cette suite de nombres est unique quelque soit le système et l'instant
qui l'a engendrée :

strGUID est une structure
Guid1 est un entier sans signe
Guid2 est un entier sur 2 octets sans signe
Guid3 est un entier sur 2 octets sans signe
Guid4 est un tableau fixe de 8 entiers sur 1 octet sans signe
FIN
stGUID est une strGUID
sGuid est une chaîne
eResultat est un entier
c est un entier
eResultat = API("OLE32.DLL","CoCreateGuid",&stGUID)
SI eResultat<>0 ALORS
sGuid =""
Erreur("Erreur dans l'appel de l'API CoCreateGUID"+RC+ErreurInfo())
SINON
// on peut aussi utiliser StringFromGUID2 pour convertir en chaine
avec les {
sGuid = NumériqueVersChaine(stGUID:Guid1, "08X")+"-"+...
NumériqueVersChaine(stGUID:Guid2, "04X")+"-"+...
NumériqueVersChaine(stGUID:Guid3, "04X")+"-"
POUR c=1 A 8
sGuid+=NumériqueVersChaine(stGUID:Guid4[c], "02X")
FIN
Info("Identifiant unique créé : " +sGuid )
FIN

--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Phil
"STASZEWSKI André" a écrit dans le message de
news:cf4vhc$8s0$
Phil wrote:
> "STASZEWSKI André" a écrit dans le message de
> news:cf3389$emo$
>> Phil wrote:
>>>
>>> Je constate aussi que la solution suivante (que j'aime bien)
>>> MonId = remplace(NetAdresseIP(), ".", "") + DonneIdentifiant()
>>> expose à des exceptions très rares, mais possible quand meme.
>>>
>>> Tout cela pour conclure que je crois que la meilleure solution
>>> possible est de faire une petite Procédure/Fonction pour générer un
>>> nom de fichier temporaire qui sera unique et fiable dans tous les
>>> cas sans aucune exception d'environnement ou autre.
>>>
>>> FONCTION NomUnique()
>>> InitHasard()
>>> FicTemp est une chaîne
>>> I est un entier
>>> POUR I=1 A 8;FicTemp=FicTemp+Caract(Hasard(65,90));FIN
>>> RENVOYER FicTemp
>>>
>>> Cette fonction génère un nom (à gauche du .fic ou autre) qui offre
>>> 208 827 064 576 combinaisons possibles, alors on oublie les risques
>>> de duplication de noms et le problème est réglé.
>>>
>>> Merci à tous pour vos réponses.
>>
>> Salut Réal,
>>
>> Pourquoi ne pas utiliser la date et l'heure système (avec les
>> centième de secondes) pour générer le nom de ton fichier ?
>> Je te promet qu'il sera unique pour l'éternité !
>> --
>> Cordialement,
>> André STASZEWSKI
>> Photo Visu version 3.0 dispo sur www.PlaneteDev.fr.st
>> Contact ; Cliquez sur ce lien : http://cerbermail.com/?OT0Wnwyzph
> ================================================= > >
> Salut André,
>
> Bien essayé comme idée... mais, comme je mentionnais dans mon
> précedent message lorsque je disais que fFichierTemp() ne fonctionne
> pas parce que 3 noms de fichiers créés en séquence donnera 3 noms
> identiques, de la meme facon HeureSys() appellé 3 fois donnera la
> meme heure incluant les centiemes de secondes.
> Donc, pas de noms uniques à tous les coups de cette facon.
>
> F1,F2,F3 sont des chaines
> F1ÚteSys()+HeureSys()
> F2ÚteSys()+HeureSys()
> F3ÚteSys()+HeureSys()
>
> F1, F2 et F3 sont tous identiques.
>
Bonjour Réal,

Normal, il faut écrire :
F1,F2,F3 sont des chaînes
F1 = DateSys()+HeureSys()
Multitache(1)
F2 = DateSys()+HeureSys()
Multitache(1)
F3 = DateSys()+HeureSys()
Trace(F1,F2,F3)

Il faut provoquer un léger retard entre chaque ordre, peut importe la


durée
donc autant prendre la plus petite. Mais ainsi tu es certain d'avoir une
chaine unique sur le passé et sur l'avenir !
--
Cordialement,
André STASZEWSKI
Photo Visu version 3.0 dispo sur www.PlaneteDev.fr.st
Contact ; Cliquez sur ce lien : http://cerbermail.com/?OT0Wnwyzph


================================================ Bonjour André,

Théoriquement le Multitâche(1) devrait régler le problème dont on parle.
Mais - je suis du genre méfiant - si on teste la théorie ça ne fonctionne
pas. Probablement à cause des fractions de centièmes de secondes. En fait,
même Multitâche(3) donne souvent deux noms de fichiers semblable. A force
d'augmenter la valeur, on y arrive bien sur.
Mais comme je disais dans mon message du 2004-08-07 12:08 c'est la même
chose avec la fonction fFichierTemp(), en ajoutant des Multitâche() on y
arrive mais je n'aime pas tellement.

De plus, je veux être certain que cela fonctionnera bien en réseau aussi.
Il y a donc un autre problème avec la solution du nom unique généré par la
date+heure (incluant les Multitâche).

Au départ, chaque poste du réseau est censé être à la même heure exacte.
Si on imagine un réseau de 100 ou 200 postes et que plus d'un usager active
cette fonction en même temps (je sais que le risque est très mince mais il
est là...) cela causera des problèmes. Et plus il y a de postes, plus il y a
de chances que cela se produise.

J'ai pensé à un autre truc aussi.
On pourrait prendre le no de série du disque dur du poste (qui devrait être
unique en théorie) + DonneIdentifiant() qui générerait très probablement un
nom de fichier unique et qui donne l'avantage d'identifier l'usager qui a
créé le fichier en cas de problème.
Mais je crois bien avoir lu quelque part qu'il est possible de changer ce no
de série.
Il y a aussi le problème des postes qui n'auraient pas de disque dur - comme
j'en ai souvent installé (Boot de l'ordinateur avec une disquette où encore
un ROM Boot).

En FoxPro la fonction SYS(2015) [ terme très mnémotechnique n'est-ce pas?
;-) ] nous garantissait un nom unique de 10 caractères et cela fonctionnait
toujours à coup sûr. Comme je n'ai pas d'equivalent en WD, je dois trouver
une solution.

Ma petite fonction qui génère 8 caractères (vieilles habitudes de DOS) offre
208 827 064 576 combinaisons possibles et est indépendante de tout contexte
extérieur.

FONCTION NomUnique()
InitHasard()
FicTemp est une chaîne
I est un entier
POUR I=1 A 8;FicTemp=FicTemp+Caract(Hasard(65,90));FIN
RENVOYER FicTemp

Si je passe de 8 à 10 caractères, j'obtiens 141 167 095 653 376 combinaisons
possibles. Ça commence à faire pas mal de possibilités ça. Je parie que même
200 usagers qui activeraient cette fonction en même temps généreraient tous
des noms différents.

La suggestion d'utiliser la date+heure, donne (AAAAMMJJHHMMSSCC) 16
caractères.
Alors là, si je génère 16 caractères avec la fonction NomUnique(), j'obtient
environ
43 608 742 899 428 880 000 000 combinaisons possibles.
Ça commence à être pas mal unique ça, non?

--
Cordialement,

Réal Philippon
Programmation Ultra Ltée -o- www.ultra.ca
L'informatique sur mesure depuis plus de 24 ans
Avatar
Phil
"Georges PEYRE" a écrit dans le message de
news:
(supersedes )

Bonjour,

Phil a utilisé son clavier pour écrire :
> "STASZEWSKI André" a écrit dans le message de
> news:cf3389$emo$
>> Phil wrote:
>>>
>>> Je constate aussi que la solution suivante (que j'aime bien)
>>> MonId = remplace(NetAdresseIP(), ".", "") + DonneIdentifiant()
>>> expose à des exceptions très rares, mais possible quand meme.
>>>
>>> Tout cela pour conclure que je crois que la meilleure solution
>>> possible est de faire une petite Procédure/Fonction pour générer un
>>> nom de fichier temporaire qui sera unique et fiable dans tous les cas
>>> sans aucune exception d'environnement ou autre.
>>>
>>> FONCTION NomUnique()
>>> InitHasard()
>>> FicTemp est une chaîne
>>> I est un entier
>>> POUR I=1 A 8;FicTemp=FicTemp+Caract(Hasard(65,90));FIN
>>> RENVOYER FicTemp
>>>
>>> Cette fonction génère un nom (à gauche du .fic ou autre) qui offre
>>> 208 827 064 576 combinaisons possibles, alors on oublie les risques
>>> de duplication de noms et le problème est réglé.
>>>
>>> Merci à tous pour vos réponses.
>>
>> Salut Réal,
>>
>> Pourquoi ne pas utiliser la date et l'heure système (avec les centième


de
>> secondes) pour générer le nom de ton fichier ?
>> Je te promet qu'il sera unique pour l'éternité !
>> -- Cordialement,
>> André STASZEWSKI
>> Photo Visu version 3.0 dispo sur www.PlaneteDev.fr.st
>> Contact ; Cliquez sur ce lien : http://cerbermail.com/?OT0Wnwyzph
> ================================================= > >
> Salut André,
>
> Bien essayé comme idée... mais, comme je mentionnais dans mon précedent
> message lorsque je disais que fFichierTemp() ne fonctionne pas parce que


3
> noms de fichiers créés en séquence donnera 3 noms identiques, de la meme
> facon HeureSys() appellé 3 fois donnera la meme heure incluant les
> centiemes
> de secondes.
> Donc, pas de noms uniques à tous les coups de cette facon.
>
> F1,F2,F3 sont des chaines
> F1ÚteSys()+HeureSys()
> F2ÚteSys()+HeureSys()
> F3ÚteSys()+HeureSys()
>
> F1, F2 et F3 sont tous identiques.

sauf si ...

NDif est un entier sur 1 octet
NDifC est un caractère
.......
NDif++
SI NDif > 9 ALORS NDif = 0
NDifC = NDif
Fn= = DateSys()+HeureSys()+NDifC

Cordialement

--
Elle est pas belle la vie ?


=================================== Salut Georges,

Ou bien tout simplement
DateSys()+HeureSys()+DonneIdentifiant()

--
Cordialement,

Réal Philippon
Programmation Ultra Ltée -o- www.ultra.ca
L'informatique sur mesure depuis plus de 24 ans
Avatar
Phil
>Romain PETIT" a écrit dans le message de


news:
STASZEWSKI André a écrit :

> Il faut provoquer un léger retard entre chaque ordre, peut importe la


durée
> donc autant prendre la plus petite. Mais ainsi tu es certain d'avoir une
> chaine unique sur le passé et sur l'avenir !

Hé non !
La loi de Murphy est toujours là !
Imagine que ton utilisateur mette à jour au même moment l'heure du
système...

Pour garantir un identifiant unique (on appelle ça GUID -pour Globally
Unique Identifier-), il existe des API spécifiques :



http://msdn.microsoft.com/library/default.asp?url=/library/en-us/rpc/rpc/guid.asp



http://msdn.microsoft.com/library/default.asp?url=/library/en-us/com/htm/cmf_a2c_05r8.asp

Voici un exemple de création de GUID en W-langage qui *garanti* que
cette suite de nombres est unique quelque soit le système et l'instant
qui l'a engendrée :

strGUID est une structure
Guid1 est un entier sans signe
Guid2 est un entier sur 2 octets sans signe
Guid3 est un entier sur 2 octets sans signe
Guid4 est un tableau fixe de 8 entiers sur 1 octet sans signe
FIN
stGUID est une strGUID
sGuid est une chaîne
eResultat est un entier
c est un entier
eResultat = API("OLE32.DLL","CoCreateGuid",&stGUID)
SI eResultat<>0 ALORS
sGuid =""
Erreur("Erreur dans l'appel de l'API CoCreateGUID"+RC+ErreurInfo())
SINON
// on peut aussi utiliser StringFromGUID2 pour convertir en chaine
avec les {
sGuid = NumériqueVersChaine(stGUID:Guid1, "08X")+"-"+...
NumériqueVersChaine(stGUID:Guid2, "04X")+"-"+...
NumériqueVersChaine(stGUID:Guid3, "04X")+"-"
POUR c=1 A 8
sGuid+=NumériqueVersChaine(stGUID:Guid4[c], "02X")
FIN
Info("Identifiant unique créé : " +sGuid )
FIN

--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)


=============================================== Bonjour,

Merci, je ne la connaissait pas celle-là. Je vais étudier cela.

Habitué avec la fonction SYS(2015) de Visual Foxpro qui garanti des noms
uniques de 10 caracteres meme si la fonction est appellée dans la meme
milliseconde, j'ai ete un peu gâté. Rien de tel avec WD8.

Mais, on arrive toujours à s'en sortir - juste un petit contretemps.

Merci encore.
--
Cordialement,

Réal Philippon
Programmation Ultra Ltée -o- www.ultra.ca
L'informatique sur mesure depuis plus de 24 ans
Avatar
Romain PETIT
Phil avait écrit le 08/08/2004 :

Ça commence à être pas mal unique ça, non?



Regarde ma solution donnée ci dessus en réponse à André (avec un GUID).

Elle a le mérite d'utiliser un clé 128 bits qui, en informatique, sert
principalement à ce que tu souhaites faire, c'est à dire à avoir un
identifiant unique indépendant de la machine et/ou de l'instance d'une
application.
De plus, il s'agit d'une implémentation par Microsoft du standard
Universally Unique Identifier (UUID).
http://www.opengroup.org/onlinepubs/9629399/apdxa.htm#tag_foot_1

Avec un GUID, le nombre de possibilité est environ 3.4E+38.

Pour la petite histoire, c'est ce type d'identifiant qui à la sortie de
W2000 a soulevé de vives critiques : en effet, Microsoft avait basé son
algorithme de création de GUID sur l'adresse MAC de la carte réseau.
Des informaticiens, défenseurs des libertés individuelles, avaient
alors découvert qu'il serait possible de tracer, par exemple, des GUID
générés lors de la création de documents et de pouvoir remonter
jusque'à la machine ayant servi à les créer...
Depuis, MS a évidemment changé son algorithme de calcul des GUID.

A+

--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)
1 2 3