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é)
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é)
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é)
"Romain PETIT" a écrit dans le message de
news:
> 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é)
================================================= >
Bonjour,
Après étude des liens que tu m'a fourni et avoir testé le code que tu as
envoyé, je n'ai aucun doute que c'est LA facon la plus sûre d'obtenir un
unique. Comme ils le disent sur le site: Un UUID est un identifiant unique
dans l'espace et le temps.
Mais la chaine est pas mal longue à 32 caracteres + les 3 tirets.
Tu t'en sert toi pour tes noms de fichiers uniques?
Est-ce que la majorité des programmeurs qui utilisent ce UUID l'utilisent
pour des noms de fichiers uniques ou s'ils l'utilisent pour autre chose?
--
Cordialement,
Réal Philippon
Programmation Ultra Ltée -o- www.ultra.ca
L'informatique sur mesure depuis plus de 24 ans
"Romain PETIT" <VoirM@Signature.fin> a écrit dans le message de
news:mn.451a7d48634644f0.2191@Signature.fin...
> 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é)
================================================= >
Bonjour,
Après étude des liens que tu m'a fourni et avoir testé le code que tu as
envoyé, je n'ai aucun doute que c'est LA facon la plus sûre d'obtenir un
unique. Comme ils le disent sur le site: Un UUID est un identifiant unique
dans l'espace et le temps.
Mais la chaine est pas mal longue à 32 caracteres + les 3 tirets.
Tu t'en sert toi pour tes noms de fichiers uniques?
Est-ce que la majorité des programmeurs qui utilisent ce UUID l'utilisent
pour des noms de fichiers uniques ou s'ils l'utilisent pour autre chose?
--
Cordialement,
Réal Philippon
Programmation Ultra Ltée -o- www.ultra.ca
L'informatique sur mesure depuis plus de 24 ans
"Romain PETIT" a écrit dans le message de
news:
> 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é)
================================================= >
Bonjour,
Après étude des liens que tu m'a fourni et avoir testé le code que tu as
envoyé, je n'ai aucun doute que c'est LA facon la plus sûre d'obtenir un
unique. Comme ils le disent sur le site: Un UUID est un identifiant unique
dans l'espace et le temps.
Mais la chaine est pas mal longue à 32 caracteres + les 3 tirets.
Tu t'en sert toi pour tes noms de fichiers uniques?
Est-ce que la majorité des programmeurs qui utilisent ce UUID l'utilisent
pour des noms de fichiers uniques ou s'ils l'utilisent pour autre chose?
--
Cordialement,
Réal Philippon
Programmation Ultra Ltée -o- www.ultra.ca
L'informatique sur mesure depuis plus de 24 ans
"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?
"STASZEWSKI André" <sa.evasion@waika9.com> a écrit dans le message de
news:cf4vhc$8s0$1@news.tiscali.fr...
Phil wrote:
"STASZEWSKI André" <sa.evasion@waika9.com> a écrit dans le message
de news:cf3389$emo$1@news.tiscali.fr...
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?
"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?
> Bah, je pense que pour l'usage que tu veux en faire, il ne faut pas trop
compliquer la vie...
Même en utilisant ma fonction, au besoin tu tests l'existence éventuelle
fichier sur le disque que tu comptes créer, et si par malheur il existe,
relances l'algo pour sortir un autre nom...
N'empêche que Romain m'a apprit qq chose...
A+
--
Cordialement,
André STASZEWSKI
Photo Visu version 3.0 dispo sur www.PlaneteDev.fr.st
Contact ; Cliquez sur ce lien : http://cerbermail.com/?OT0Wnwyzph
> Bah, je pense que pour l'usage que tu veux en faire, il ne faut pas trop
compliquer la vie...
Même en utilisant ma fonction, au besoin tu tests l'existence éventuelle
fichier sur le disque que tu comptes créer, et si par malheur il existe,
relances l'algo pour sortir un autre nom...
N'empêche que Romain m'a apprit qq chose...
A+
--
Cordialement,
André STASZEWSKI
Photo Visu version 3.0 dispo sur www.PlaneteDev.fr.st
Contact ; Cliquez sur ce lien : http://cerbermail.com/?OT0Wnwyzph
> Bah, je pense que pour l'usage que tu veux en faire, il ne faut pas trop
compliquer la vie...
Même en utilisant ma fonction, au besoin tu tests l'existence éventuelle
fichier sur le disque que tu comptes créer, et si par malheur il existe,
relances l'algo pour sortir un autre nom...
N'empêche que Romain m'a apprit qq chose...
A+
--
Cordialement,
André STASZEWSKI
Photo Visu version 3.0 dispo sur www.PlaneteDev.fr.st
Contact ; Cliquez sur ce lien : http://cerbermail.com/?OT0Wnwyzph