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?
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.
Non, ca serait d'ailleurs impossible sans passer par un moyen externe (fichier, base), ou si l'un des postes servait de serveur, etc...
Mais ce n'est pas ce qui se passe; chaque incrémentation se fait individuellement dans chaque instance.
C'est ce qu'il fallait comprendre dans la doc.
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?
Non, il faut le gérer manuellement.
In article <xOQOc.70498$Vp1.1209516@weber.videotron.net>,
pasdespam_info@ultra.ca says...
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.
Non, ca serait d'ailleurs impossible sans passer par un moyen externe
(fichier, base), ou si l'un des postes servait de serveur, etc...
Mais ce n'est pas ce qui se passe; chaque incrémentation se fait
individuellement dans chaque instance.
C'est ce qu'il fallait comprendre dans la doc.
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?
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.
Non, ca serait d'ailleurs impossible sans passer par un moyen externe (fichier, base), ou si l'un des postes servait de serveur, etc...
Mais ce n'est pas ce qui se passe; chaque incrémentation se fait individuellement dans chaque instance.
C'est ce qu'il fallait comprendre dans la doc.
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?
Non, il faut le gérer manuellement.
ted
Gilles G. écrivait news::
In article <xOQOc.70498$, says...
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.
Non, ca serait d'ailleurs impossible sans passer par un moyen externe (fichier, base), ou si l'un des postes servait de serveur, etc...
Mais ce n'est pas ce qui se passe; chaque incrémentation se fait individuellement dans chaque instance.
C'est ce qu'il fallait comprendre dans la doc.
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?
Non, il faut le gérer manuellement.
Salut,
Il y a une solution par identifiant auto d'un fichier hyperfile.
-- En esperant t'avoir aidé. ted
Gilles G. <debians@yahoo.fr> écrivait
news:GFr.1b77042798eb36fe989ef1@news.9online.fr:
In article <xOQOc.70498$Vp1.1209516@weber.videotron.net>,
pasdespam_info@ultra.ca says...
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.
Non, ca serait d'ailleurs impossible sans passer par un moyen externe
(fichier, base), ou si l'un des postes servait de serveur, etc...
Mais ce n'est pas ce qui se passe; chaque incrémentation se fait
individuellement dans chaque instance.
C'est ce qu'il fallait comprendre dans la doc.
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?
Non, il faut le gérer manuellement.
Salut,
Il y a une solution par identifiant auto d'un fichier hyperfile.
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.
Non, ca serait d'ailleurs impossible sans passer par un moyen externe (fichier, base), ou si l'un des postes servait de serveur, etc...
Mais ce n'est pas ce qui se passe; chaque incrémentation se fait individuellement dans chaque instance.
C'est ce qu'il fallait comprendre dans la doc.
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?
Non, il faut le gérer manuellement.
Salut,
Il y a une solution par identifiant auto d'un fichier hyperfile.
-- En esperant t'avoir aidé. ted
Pisseur de code
Pour obtenir un identifiant unique facilement vous pouvez mettre en suffixe l'adresse IP (en supprimant les points) du poste en question, suivie de la valeur retournée par DonneIdentifiant() :
"Phil" a écrit dans le message de news:xOQOc.70498$
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
Pour obtenir un identifiant unique facilement vous pouvez mettre en suffixe
l'adresse IP (en supprimant les points) du poste en question, suivie de la
valeur retournée par DonneIdentifiant() :
"Phil" <pasdespam_info@ultra.ca> a écrit dans le message de
news:xOQOc.70498$Vp1.1209516@weber.videotron.net...
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
Pour obtenir un identifiant unique facilement vous pouvez mettre en suffixe l'adresse IP (en supprimant les points) du poste en question, suivie de la valeur retournée par DonneIdentifiant() :
"Phil" a écrit dans le message de news:xOQOc.70498$
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
Y a-t-il des exceptions possible qu'un poste n'ait pas d'adresse IP ?
Si tu n'utilises pas le protocole IP. (cela devient rare, mais un réseau en ipx par ex) Si tu es derrière un firewall, tout tes postes auraient la meme IP (surtout vrai en internet)
-- Cordialement,
Réal Philippon
-- Eric Roumégou http://cerbermail.com/?TSoulBerPA (cliquez sur le lien ci-dessus pour me contacter en privé)
Y a-t-il des exceptions possible qu'un poste n'ait pas d'adresse IP ?
Si tu n'utilises pas le protocole IP. (cela devient rare, mais un
réseau en ipx par ex)
Si tu es derrière un firewall, tout tes postes auraient la meme IP
(surtout vrai en internet)
--
Cordialement,
Réal Philippon
--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)
Y a-t-il des exceptions possible qu'un poste n'ait pas d'adresse IP ?
Si tu n'utilises pas le protocole IP. (cela devient rare, mais un réseau en ipx par ex) Si tu es derrière un firewall, tout tes postes auraient la meme IP (surtout vrai en internet)
-- Cordialement,
Réal Philippon
-- Eric Roumégou http://cerbermail.com/?TSoulBerPA (cliquez sur le lien ci-dessus pour me contacter en privé)
Phil
Merci Éric de cette information précieuse.
-- Cordialement,
Réal Philippon
"Roumegou" a écrit dans le message de news:
Phil a utilisé son clavier pour écrire : > Bonjour, > >> MonId = remplace(NetAdresseIP(), ".", "") + DonneIdentifiant() > > Mais c'est que j'adore cette solution astucieuse. > > Y a-t-il des exceptions possible qu'un poste n'ait pas d'adresse IP ? > Si tu n'utilises pas le protocole IP. (cela devient rare, mais un réseau en ipx par ex) Si tu es derrière un firewall, tout tes postes auraient la meme IP (surtout vrai en internet)
> -- > Cordialement, > > Réal Philippon
-- Eric Roumégou http://cerbermail.com/?TSoulBerPA (cliquez sur le lien ci-dessus pour me contacter en privé)
Merci Éric de cette information précieuse.
--
Cordialement,
Réal Philippon
"Roumegou" <Utilisezlelien@fin.msg> a écrit dans le message de
news:mn.146e7d48c50a6c27.11485@fin.msg...
Phil a utilisé son clavier pour écrire :
> Bonjour,
>
>> MonId = remplace(NetAdresseIP(), ".", "") + DonneIdentifiant()
>
> Mais c'est que j'adore cette solution astucieuse.
>
> Y a-t-il des exceptions possible qu'un poste n'ait pas d'adresse IP ?
>
Si tu n'utilises pas le protocole IP. (cela devient rare, mais un
réseau en ipx par ex)
Si tu es derrière un firewall, tout tes postes auraient la meme IP
(surtout vrai en internet)
> --
> Cordialement,
>
> Réal Philippon
--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)
Phil a utilisé son clavier pour écrire : > Bonjour, > >> MonId = remplace(NetAdresseIP(), ".", "") + DonneIdentifiant() > > Mais c'est que j'adore cette solution astucieuse. > > Y a-t-il des exceptions possible qu'un poste n'ait pas d'adresse IP ? > Si tu n'utilises pas le protocole IP. (cela devient rare, mais un réseau en ipx par ex) Si tu es derrière un firewall, tout tes postes auraient la meme IP (surtout vrai en internet)
> -- > Cordialement, > > Réal Philippon
-- Eric Roumégou http://cerbermail.com/?TSoulBerPA (cliquez sur le lien ci-dessus pour me contacter en privé)
Bertrand
> Si tu es derrière un firewall, tout tes postes auraient la meme IP (surtout vrai en internet)
niet ils auront la même adresse vu de l'extérieur, mais ca ne les empêche pas d'avoir une adresse local obligatoirement différente.
> Si tu es derrière un firewall, tout tes postes auraient la meme IP (surtout
vrai en internet)
niet
ils auront la même adresse vu de l'extérieur, mais ca ne les empêche
pas d'avoir une adresse local obligatoirement différente.
> Si tu es derrière un firewall, tout tes postes auraient la meme IP (surtout vrai en internet)
niet ils auront la même adresse vu de l'extérieur, mais ca ne les empêche pas d'avoir une adresse local obligatoirement différente.
Eric Demeester
dans (in) fr.comp.developpement.agl.windev, Bertrand ecrivait (wrote) :
Bonsoir,
niet
Pile-poil.
ils auront la même adresse vu de l'extérieur, mais ca ne les empêche pas d'avoir une adresse local obligatoirement différente.
Ca s'appelle la NAT [*] (Network Address Translation) :)
Reste un problème, pas forcément pénalisant dans ce cas précis, pour identifier précisément les clients s'ils sont derrière un serveur DHCP (adresses IP attribués à la volée à chaque chaque fois que le client se connecte au serveur, pour simplifier).
dans (in) fr.comp.developpement.agl.windev, Bertrand
<bartho.a.b_ANTI_SPAM@wanadoo.fr> ecrivait (wrote) :
Bonsoir,
niet
Pile-poil.
ils auront la même adresse vu de l'extérieur, mais ca ne les empêche
pas d'avoir une adresse local obligatoirement différente.
Ca s'appelle la NAT [*] (Network Address Translation) :)
Reste un problème, pas forcément pénalisant dans ce cas précis, pour
identifier précisément les clients s'ils sont derrière un serveur DHCP
(adresses IP attribués à la volée à chaque chaque fois que le client se
connecte au serveur, pour simplifier).
dans (in) fr.comp.developpement.agl.windev, Bertrand ecrivait (wrote) :
Bonsoir,
niet
Pile-poil.
ils auront la même adresse vu de l'extérieur, mais ca ne les empêche pas d'avoir une adresse local obligatoirement différente.
Ca s'appelle la NAT [*] (Network Address Translation) :)
Reste un problème, pas forcément pénalisant dans ce cas précis, pour identifier précisément les clients s'ils sont derrière un serveur DHCP (adresses IP attribués à la volée à chaque chaque fois que le client se connecte au serveur, pour simplifier).
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?
Bonjour,
j'aimerais savoir quelle est ton idée précise; je pense qu'en la exposant tu t'apercevras qu'au fond tu n'as pas besoin d'acceder une fenetre ouverte par <instance1> avec <instance2>. Ou je me trompe ? A+
-- Ceci est une signature automatique de MesNews. Site : http://mesnews.no-ip.com
Phil a émis l'idée suivante :
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?
Bonjour,
j'aimerais savoir quelle est ton idée précise; je pense qu'en la
exposant tu t'apercevras qu'au fond tu n'as pas besoin d'acceder une
fenetre ouverte par <instance1> avec <instance2>. Ou je me trompe ?
A+
--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com
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?
Bonjour,
j'aimerais savoir quelle est ton idée précise; je pense qu'en la exposant tu t'apercevras qu'au fond tu n'as pas besoin d'acceder une fenetre ouverte par <instance1> avec <instance2>. Ou je me trompe ? A+
-- Ceci est une signature automatique de MesNews. Site : http://mesnews.no-ip.com
Phil
"farplus" a écrit dans le message de news:
Phil a émis l'idée suivante : > 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?
Bonjour,
j'aimerais savoir quelle est ton idée précise; je pense qu'en la exposant tu t'apercevras qu'au fond tu n'as pas besoin d'acceder une fenetre ouverte par <instance1> avec <instance2>. Ou je me trompe ? A+
-- Ceci est une signature automatique de MesNews. Site : http://mesnews.no-ip.com
Je me disais aussi que c'était trop beau pour être vrai ce DonneIdentifiant() ;-)
Selon ce que j'avais compris dans l'aide je pensais utiliser DonneIdentifiant() pour obtenir des noms de fichiers temporaires uniques - en réseau ou non. Mais comme l'incrémentation est individuelle sur chaque poste, je ne peux l'utiliser sans risquer des conflits de noms pareils.
En fait, ce serait pas compliqué du tout de faire un petite routine qui donnerait une incrémentation en réseau ou non.
D'autre part, il y a la fonction fFichierTemp() qui est censé créer des noms uniques mais on ne peut s'y fier non plus. En réseau, il arrive fréquemment qu'on ait besoin de plusieurs fichiers temporaires qui sont créé au début d'un processus particulier.
Par exemple, le code suivant... Fichier1,Fichier2,Fichier3 sont des chaines Fichier1ÿichierTemp("ABC","C:TEMP") Fichier2ÿichierTemp("ABC","C:TEMP") Fichier3ÿichierTemp("ABC","C:TEMP")
Donnera 3 noms de fichiers identiques même sur un Pentium relativement lent. On ne peux donc pas s'y fier. Un Multitâche(20) entre chacun règle probablement le problème mais ce n'est pas très élégant, ni fiable.
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.
-- Cordialement,
Réal Philippon Programmation Ultra Ltée -o- www.ultra.ca L'informatique sur mesure depuis plus de 24 ans
"farplus" <farplus@free.fr> a écrit dans le message de
news:mn.3a8e7d4838fbc9d0.9677@free.fr...
Phil a émis l'idée suivante :
> 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?
Bonjour,
j'aimerais savoir quelle est ton idée précise; je pense qu'en la
exposant tu t'apercevras qu'au fond tu n'as pas besoin d'acceder une
fenetre ouverte par <instance1> avec <instance2>. Ou je me trompe ?
A+
--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com
Je me disais aussi que c'était trop beau pour être vrai ce
DonneIdentifiant() ;-)
Selon ce que j'avais compris dans l'aide je pensais utiliser
DonneIdentifiant() pour obtenir des noms de fichiers temporaires uniques -
en réseau ou non. Mais comme l'incrémentation est individuelle sur chaque
poste, je ne peux l'utiliser sans risquer des conflits de noms pareils.
En fait, ce serait pas compliqué du tout de faire un petite routine qui
donnerait une incrémentation en réseau ou non.
D'autre part, il y a la fonction fFichierTemp() qui est censé créer des noms
uniques mais on ne peut s'y fier non plus.
En réseau, il arrive fréquemment qu'on ait besoin de plusieurs fichiers
temporaires qui sont créé au début d'un processus particulier.
Par exemple, le code suivant...
Fichier1,Fichier2,Fichier3 sont des chaines
Fichier1ÿichierTemp("ABC","C:TEMP")
Fichier2ÿichierTemp("ABC","C:TEMP")
Fichier3ÿichierTemp("ABC","C:TEMP")
Donnera 3 noms de fichiers identiques même sur un Pentium relativement lent.
On ne peux donc pas s'y fier.
Un Multitâche(20) entre chacun règle probablement le problème mais ce n'est
pas très élégant, ni fiable.
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.
--
Cordialement,
Réal Philippon
Programmation Ultra Ltée -o- www.ultra.ca
L'informatique sur mesure depuis plus de 24 ans
Phil a émis l'idée suivante : > 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?
Bonjour,
j'aimerais savoir quelle est ton idée précise; je pense qu'en la exposant tu t'apercevras qu'au fond tu n'as pas besoin d'acceder une fenetre ouverte par <instance1> avec <instance2>. Ou je me trompe ? A+
-- Ceci est une signature automatique de MesNews. Site : http://mesnews.no-ip.com
Je me disais aussi que c'était trop beau pour être vrai ce DonneIdentifiant() ;-)
Selon ce que j'avais compris dans l'aide je pensais utiliser DonneIdentifiant() pour obtenir des noms de fichiers temporaires uniques - en réseau ou non. Mais comme l'incrémentation est individuelle sur chaque poste, je ne peux l'utiliser sans risquer des conflits de noms pareils.
En fait, ce serait pas compliqué du tout de faire un petite routine qui donnerait une incrémentation en réseau ou non.
D'autre part, il y a la fonction fFichierTemp() qui est censé créer des noms uniques mais on ne peut s'y fier non plus. En réseau, il arrive fréquemment qu'on ait besoin de plusieurs fichiers temporaires qui sont créé au début d'un processus particulier.
Par exemple, le code suivant... Fichier1,Fichier2,Fichier3 sont des chaines Fichier1ÿichierTemp("ABC","C:TEMP") Fichier2ÿichierTemp("ABC","C:TEMP") Fichier3ÿichierTemp("ABC","C:TEMP")
Donnera 3 noms de fichiers identiques même sur un Pentium relativement lent. On ne peux donc pas s'y fier. Un Multitâche(20) entre chacun règle probablement le problème mais ce n'est pas très élégant, ni fiable.
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.
-- Cordialement,
Réal Philippon Programmation Ultra Ltée -o- www.ultra.ca L'informatique sur mesure depuis plus de 24 ans