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

[WB9] Modifier l'état d'un champ depuis son nom

9 réponses
Avatar
paratge
Bonjour,

j'ai besoin de modifier l'état d'un champ depuis son nom et j'ai du mal...

j'ai 20 images clicables img1,img2, etc...

et en fonction de valeurs de 2 varaibles je dois rendre 2 images
invisibles et mon idée serait de trouver une commande du style:

ChaineConstruit(img%1..visible=Faux,maVar) mais biensur, ceci ne
fonctionne pas.

Une expérience à me faire partager serait la bienvenue.

Merci d'avance

9 réponses

Avatar
JeAn-PhI
paratge a exposé le 10/10/2006 :
Bonjour,

j'ai besoin de modifier l'état d'un champ depuis son nom et j'ai du mal...

j'ai 20 images clicables img1,img2, etc...

et en fonction de valeurs de 2 varaibles je dois rendre 2 images invisibles
et mon idée serait de trouver une commande du style:

ChaineConstruit(img%1..visibleúux,maVar) mais biensur, ceci ne fonctionne
pas.

Une expérience à me faire partager serait la bienvenue.

Merci d'avance



avec les indirections cela ne fonctionne pas ?
MaVar est chaine = "img1"
{MaVar}..Visible = Faux
il ne reste plus qu'à mettre à jour la variable "MaVar"

--
Cordialement JeAn-PhI
Avatar
paratge
JeAn-PhI a écrit :
paratge a exposé le 10/10/2006 :

Bonjour,

j'ai besoin de modifier l'état d'un champ depuis son nom et j'ai du
mal...

j'ai 20 images clicables img1,img2, etc...

et en fonction de valeurs de 2 varaibles je dois rendre 2 images
invisibles et mon idée serait de trouver une commande du style:

ChaineConstruit(img%1..visibleúux,maVar) mais biensur, ceci ne
fonctionne pas.

Une expérience à me faire partager serait la bienvenue.

Merci d'avance




avec les indirections cela ne fonctionne pas ?
MaVar est chaine = "img1"
{MaVar}..Visible = Faux
il ne reste plus qu'à mettre à jour la variable "MaVar"




Ben si, ça marche !

Un gros éclair de stupidité, voilà ce que j'ai eu ce matin !
Quand on est trop "dedans", on fait des trucs bizarres des fois...

En fait, lorsque j'ai écrit j'avais 2 problèmes, un qui est résolu
maintenant, et la question que je voulais poser qui est tout autre :

j'ai besoin de donner une valeur aléatoire à ces fameuses 20 images et
je n'arrive pas à éliminer les doublons. Quelle méthode permettrait
d'avoir 1 valeur unique par image ?
Avatar
bob
> j'ai besoin de donner une valeur aléatoire à ces fameuses 20 images et
je n'arrive pas à éliminer les doublons. Quelle méthode permettrait
d'avoir 1 valeur unique par image ?



Utiliser DonneIdentifiant ()

Bob.
Avatar
bob
On Tue, 10 Oct 2006 15:33:28 +0200, paratge wrote:


Je me rends compte que je m'exprime comme un chancre.

Le preoblème est en fait le suivant :

J'ai 20 images masquées sur une ligne. Ces 20 images doivent
obligatoirement avoir une valeur comprise entre 1 et 20, et ce de façon
aléatoire afin qu'elle ne soient en théorie pas affectées des mêmes
valeurs si on recharge la page.

Comment peut-on donc obtenir une suite aléatoire de 20 valeurs
dédoublonnées ?

Là sur le coup, je crois que c'est clair... ;)



Avec seulement des valeurs dans [1,20], la probabilité qu'une image ait
deux fois la même valeurs est plutot forte !

Peux-tu transmettre les ancienne valeurs lors du rechargement de la page ?

Bob.
Avatar
nicolas
Bien que je ne sois pas sur d'avoir saisi la subtilité du pb, je te
propose cette solution.
Tu geres en dur dans un tableau un pool de valeur (de 1 a 20).
Chaque image est tjrs initialisée au meme indice de ton tableau.
A chaque refresh de ta page tu melanges ton tableau de maniere
aléatoire en utilisant la fonction hasard. De cette maniere tu es sur
d'avoir 20 valeurs non doublées mélangées.

On pourrait imaginer la methode suivante:

procedure melangeTableau()
pour i=1 à 20
j=hasard(1,20)
echangecontenu(i,j)

avec echangecontenu(i,j) qui echange le contenu des cases i et j

Reste a savoir si j'ai bien compris ton probleme ^^

bob a écrit :

On Tue, 10 Oct 2006 15:33:28 +0200, paratge wrote:

>
> Je me rends compte que je m'exprime comme un chancre.
>
> Le preoblème est en fait le suivant :
>
> J'ai 20 images masquées sur une ligne. Ces 20 images doivent
> obligatoirement avoir une valeur comprise entre 1 et 20, et ce de faç on
> aléatoire afin qu'elle ne soient en théorie pas affectées des m êmes
> valeurs si on recharge la page.
>
> Comment peut-on donc obtenir une suite aléatoire de 20 valeurs
> dédoublonnées ?
>
> Là sur le coup, je crois que c'est clair... ;)
>
Avec seulement des valeurs dans [1,20], la probabilité qu'une image ait
deux fois la même valeurs est plutot forte !

Peux-tu transmettre les ancienne valeurs lors du rechargement de la page ?

Bob.


Avatar
paratge
nicolas a écrit :
Bien que je ne sois pas sur d'avoir saisi la subtilité du pb, je te
propose cette solution.
Tu geres en dur dans un tableau un pool de valeur (de 1 a 20).
Chaque image est tjrs initialisée au meme indice de ton tableau.
A chaque refresh de ta page tu melanges ton tableau de maniere
aléatoire en utilisant la fonction hasard. De cette maniere tu es sur
d'avoir 20 valeurs non doublées mélangées.

On pourrait imaginer la methode suivante:

procedure melangeTableau()
pour i=1 à 20
j=hasard(1,20)
echangecontenu(i,j)

avec echangecontenu(i,j) qui echange le contenu des cases i et j

Reste a savoir si j'ai bien compris ton probleme ^^




Merci Nicolas,

Je teste tout de suite ton idée qui me parait séduisante et rationnelle.

Merci encore
Avatar
paratge
paratge a écrit :
nicolas a écrit :

Bien que je ne sois pas sur d'avoir saisi la subtilité du pb, je te
propose cette solution.
Tu geres en dur dans un tableau un pool de valeur (de 1 a 20).
Chaque image est tjrs initialisée au meme indice de ton tableau.
A chaque refresh de ta page tu melanges ton tableau de maniere
aléatoire en utilisant la fonction hasard. De cette maniere tu es sur
d'avoir 20 valeurs non doublées mélangées.

On pourrait imaginer la methode suivante:

procedure melangeTableau()
pour i=1 à 20
j=hasard(1,20)
echangecontenu(i,j)

avec echangecontenu(i,j) qui echange le contenu des cases i et j

Reste a savoir si j'ai bien compris ton probleme ^^




Merci Nicolas,

Je teste tout de suite ton idée qui me parait séduisante et rationnelle.

Merci encore



Eh ben non...

Ou alors, je suis passé à coté de quelque chose, car je n'ai plus de
valeur en double, mais à la place, il me manque une voire 2 images. Les
doublons sur le nom des images écrasent la première créée donc à la
sortie il m'en manque.

Je me suis donc penché sur le mélange aléatoire et non plus la création
de valeurs.

j'ai créé 1 tableau gfValeurs de 20 entiers

InitHasard()


POUR i = 1 A 27
j = Hasard(1,27)
TableauAjoute(gfValeurs,j)
m = TableauCherche(gfValeurs,tcLinéairePremier,j)
SI m <> -1 ALORS
gfValeurs[m] = Hasard(1,27)
FIN
FIN

le clic seveur sur chaque carte est defini par la procédure suivante :

PROCEDURE Tirage(nVal)

SELON n
CAS 0
Image6..Visible = Vrai
n++
CARTE1 = gfValeurs[nVal]
CAS 1
Image7..Visible = Vrai
n++
CARTE2 = gfValeurs[nVal]
CAS 2
Image8..Visible = Vrai
n++
CARTE3 = gfValeurs[nVal]
CAS 3
Image9..Visible = Vrai
n++
CARTE4 = gfValeurs[nVal]
CAS 4
Image10..Visible = Vrai
n++
CARTE5 = gfValeurs[nVal]
FIN

Mais la valeur renvoyée est toujours 0.

La nuit a été longue, j'ai du louper quelque chose...

Une idée à me soumettre ?
Avatar
nicolas
Bonjour,

j'avoue ne pas comprendre ton probleme et surtout le lien entre tes
images, les valeurs melangées et non doublées.

Je ne comprend pas non plus la finalité du code ci-dessous:

POUR i = 1 A 27

// tu generes une valeur entre 1 et 27
j = Hasard(1,27)

// que tu ajoutes dans ton tableau gfValeurs (doublon possible)
TableauAjoute(gfValeurs,j)

// tu recuperes l'indice "m" de ton tableau ou tu viens d'insérer ta
valeur
// a priori "i" te l'aurais donné sans passer par "TableauCherche"
m = TableauCherche(gfValeurs,tcLinéairePremier,j)
SI m <> -1 ALORS
// tu ecrases le contenu de gfValeurs[m] par une valeur
entre 1 et 27
// pourquoi ? tu n'as pas l'assurance que cette valeur
n'est pas déja présente
// dans ton tableau, ni qu'elle est différente de j
gfValeurs[m] = Hasard(1,27)
FIN
FIN

Si tu pouvais m'éclairer un peu plus sur ton pb ;)
Avatar
paratge
nicolas a écrit :
Bonjour,

j'avoue ne pas comprendre ton probleme et surtout le lien entre tes
images, les valeurs melangées et non doublées.

Je ne comprend pas non plus la finalité du code ci-dessous:

POUR i = 1 A 27

// tu generes une valeur entre 1 et 27
j = Hasard(1,27)

// que tu ajoutes dans ton tableau gfValeurs (doublon possible)
TableauAjoute(gfValeurs,j)

// tu recuperes l'indice "m" de ton tableau ou tu viens d'insérer ta
valeur
// a priori "i" te l'aurais donné sans passer par "TableauCherche"
m = TableauCherche(gfValeurs,tcLinéairePremier,j)
SI m <> -1 ALORS
// tu ecrases le contenu de gfValeurs[m] par une valeur
entre 1 et 27
// pourquoi ? tu n'as pas l'assurance que cette valeur
n'est pas déja présente
// dans ton tableau, ni qu'elle est différente de j
gfValeurs[m] = Hasard(1,27)
FIN
FIN

Si tu pouvais m'éclairer un peu plus sur ton pb ;)




Malheureusement, je ne peux pas trop en dire... confidentialité oblige.

Il s'agit d'un test en aveugle.
Imagine que l'utilisateur est un consultant chez une cartomancienne et
qu'il doit mélanger 20 cartes et en tirer 5 forcémment toutes
différentes, puis les retourner et effectuer son analyse.

Dans l'idée c'est ça.

Donc, les cartes ont toutes le même verso, il faut leur attribuer un
recto aléatoirement et sans doublon.

Or, lors du "tirage", il m'arrive d'avoir 2 fois la même.