Jump to content
Agnès

De L'importance De L'imbrication

Recommended Posts

Aah, j'étais jeune et beau. C'était avant que je me mette à chanter.

D'ailleurs pour ceux que ça intéresse, je vends un coupé sport américain noir, éclairage de calandre personnalisé, très peu servi.

Share this post


Link to post
Share on other sites

houlala ça va bientot arriver à la silicon vallee et si ça continue faudra que ça cesse :)

Share this post


Link to post
Share on other sites

Bon,

 

Depuis quand la symbolique d'une île s'apparente à un appel à l'aide ? Il me semble que les corses vivent parfaitement leur insularité. Ne parlons pas des anglais, ont-ils une seule fois demandé à être sauvé, et qui n'a jamais voulu les aider d'ailleurs ? :hehe:

 

"La barrière de la mer ou de l'océan représente le passage à un autre monde, une alternative à un continent stressant/oppressant...se rendre dans une île équivaut à accéder à un monde premier plutôt que primitif, indemne des maux de la civilisation urbaine.
Permissif, anti-monde, facile à approprier, à l’abri des regards, sont le résultat de l'imaginaire que renvoie les territoires insulaires."

source Wikipedia : Imaginaire de l'insularité

 

Ne pas confondre insularité et insularisme non plus. Donc oubliez les jumelles et à vos rames !

Share this post


Link to post
Share on other sites

« Aah, j'étais jeune et beau. »

 

Un peu de gras tout de même... mais très légèrement...

 

Mais tes amies avaient toutes le même maillot de bain... et une forte attirance pour le silicone... 

 

Alerte2.jpg

 

Mais c'était il y a bien longtemps...

post-233-0-75751700-1444404580_thumb.jpg

post-233-0-75751700-1444404580_thumb.jpg

post-233-0-75751700-1444404580_thumb.jpg

post-233-0-75751700-1444404580_thumb.jpg

post-233-0-75751700-1444404580_thumb.jpg

post-233-0-75751700-1444404580_thumb.jpg

post-233-0-75751700-1444404580_thumb.jpg

post-233-0-75751700-1444404580_thumb.jpg

post-233-0-75751700-1444404580_thumb.jpg

post-233-0-75751700-1444404580_thumb.jpg

post-233-0-75751700-1444404580_thumb.jpg

post-233-0-75751700-1444404580_thumb.jpg

post-233-0-75751700-1444404580_thumb.jpg

Share this post


Link to post
Share on other sites

Bon,

 

Depuis quand la symbolique d'une île s'apparente à un appel à l'aide ?

il semblerait bien qu'on nous ai abandonné tous les deux sur cette île en plus :hello:

La symbolique de l'île peut-être pas, mais la symbolique de l'abandon... :)

Mais voyez, on vous envoie du secours : reste plus qu'à fabriquer le métier à tisser géant qui va avec la navette que tient la blonde à la coupe de cheveux si exquise, et on pourra tricoter un zodiac.

Share this post


Link to post
Share on other sites

Olivier, ton mode vendredi part en sucette

Share this post


Link to post
Share on other sites

D'où l'importance de l'imbrication.

 

Bon, l'île, c'est fait... :drop:

 

Si le paging est le même pour tous, peut-être peut-on supprimer la première page de ce fil, non ? :diable:

Share this post


Link to post
Share on other sites

Bon....

 

Ben je m'en suis débarrassé en le mettant sur mon site ...

Impossible de passer les variables d'un coté droit a gauche et de gauche au coté droit pour reprendre la page 1, elles se percutent sans arrêt. En 1 ou 2 fonction idem ou alors il faut multiplier les paramètres pour la 2eme et ça devient imbi.a.le en lecture et écriture.

 

Donc, je suis restée sur la version que j'utilise depuis plus d'1 an avec le passage du code en variable, j'ai grappillé pas mal de secondes ici et là. Et ça me va. B)

 

Ceci étant juste pour stocker l'info ici, quand je relirais ce fil si je retente un jours mes âneries hein, je ne veux pas vous déranger ;)

Je vous laisse à vos sucettes sur votre île :rolleyes:  ;)

 

Agnès

Share this post


Link to post
Share on other sites

Bon,  qui veut bien ramer me suive ;)

Parce que moi, j’ai ramé grave.

 

Je post officiellement cette chose ici ;)

 

Cfs( $$_mêmePasPeurMenFiche ; "EtAlors" ; "WhyNot" ;"!!!!!" ; "" )

Share this post


Link to post
Share on other sites

Flute d'abord, et une fois n'est pas coutume, je fais mon Julien :helmet:

 

Et parce que je l'aime beaucoup et que.... comment dire.... le refrain est d'actualité ;)

 

Merci

!

 

 

[3 messages de suite, je tente le passage à la page 3 :ninja: ]

Share this post


Link to post
Share on other sites

Mode Samedi On, alors...

 

Pour pas pourrir ton autre post avec tes choix définitifs, je pose les questions ici, sur la presque page 3

 

Si je transpose tes Tic, tes Tacs et tes variables dans l'assemblage plus bas, j'en conclu aisément en effet que :

 

- les variables déclarées par Tac(), puis exploitées par Tic() pour évaluer la formule intégrée dans $$_maVariable, doivent être vidées une fois que Tic() a été exécutée, au risque d'être en conflit avec les mêmes variables déclarées pour un autre appel de Tic(), en amont.

Tic ( $$_maVariable ;    Tac ( n ;        Tic ( $$_maVariable ;            Tac ( n ; MonParam ) & Tac ( n ; MonParam )        )    )}

- les variables déclarées par Tac() doivent aussi être codifiées pour éviter tout conflit dans une exploitation pour un enchaînement du type :

 Tic ( $$_maVariable ;     Tac ( n ;           Tic ( $$_maVariable ;             Tac ( n ;  Tac ( n ; monParam ) )         )     ) }

Histoire de poursuivre les tests, et d'essayer de déchiffrer totalement les Tic et les Tac...

 

Peux-tu nous fournir le code que tu as utilisé en premier lieu pour cette fonction :

 

Quote

Tic ( $$_maVariable ; Paramètre )

 

Et :

  • que contient donc "MonParam" intégré à la fonction Tac () ?
  • comment donc t'assures-tu qu'il est distinctif ?
  • en quoi cela diffère alors de la fonction que tu as testé dans :

 

Quote

Tac ( $$_maVariable ;  n ;  MonParam )

 

Et dire que l'hiver arrive bientôt ;)

Share this post


Link to post
Share on other sites

Bop !

 

T'es sur de toi de me relancer la dessus ???

 

t'es fou. Je réponds, pardon d'avance ;)

 

le code des cf : simplement l'adaptation d'un Let() supplémentaire, histoire de

• ne pas modifier les noms des paramètres des CF

• ne pas faire de substitute dans le code

donc

• laisser le code original au max

 

 

ce que j'ai tenté entre autres, avec le code suivant

 

//TestCf ( Atr_1 ; Atr_2 ; Atr_3 ; Atr_4 )

“<V1>” & Atr_1 & “</V1>” & ¶ &
“<V2>” & Atr_2 & “</V2>” & ¶ &
“<V3>” & Atr_3 & “</V3>” & ¶ &
“<V4>” & Atr_4 & “</V4>”

 

cela donne la variable $$_TestCf suivante :

 

Let ([Atr_1=$z_A[1] ;$z_A[1] = "";Atr_2=$z_A[2] ;$z_A[2] = "";Atr_3=$z_A[3] ;$z_A[3] = "";Atr_4=$z_A[4] ;$z_A[4] = ""];
“<V1>” & Atr_1 & “</V1>” & ¶ &
“<V2>” & Atr_2 & “</V2>” & ¶ &
“<V3>” & Atr_3 & “</V3>” & ¶ &
“<V4>” & Atr_4 & “</V4>” )

 

 

avec Cfs, l'ecriture donne ça :

//simple

Cfs ( $$_TestCF ; "aaa" ; "bbb" ; "ccc" ; "ddd" )
 & "¶ -  -  -  -  - ¶" &

//imbriqué
Cfs ( $$_TestCF ; "aaa" ; "bbb" ;
Cfs ( $$_TestCF ; "111" ; "222" ; "333" ; "444" )
 ; "ddd" )

 

les résultats sont ok  :

<V1>aaa</V1>
<V2>bbb</V2>
<V3>ccc</V3>
<V4>ddd</V4>
 -  -  -  -  -
<V1>aaa</V1>
<V2>bbb</V2>
<V3><V1>111</V1>
<V2>222</V2>
<V3>333</V3>
<V4>444</V4></V3>
<V4>ddd</V4>

 

les variables $_A[x] ne peuvent s'entrechoquer car 1 seul Evaluate va les gérer, par fonction imbriquée

 

voici ce que donne l'un des essais  en 2 cf :

avec Tic ( Funstion ; Param )

et Tac ( n ; Param ) // je ne veux pas le faire en plus de parametres

 

1/ Tic est Evaluate ( Function )

Tac est Let ( $z_A[n] = Param ; "" )

 

 

Tic ( $$_TestCF ; Tac ( 1 ; "aaa" ) & Tac ( 2 ; "bbb" ) & Tac ( 3 ; "ccc" )  & Tac ( 4 ; "ddd" ) )
& "¶ -  -  - ¶" &
Tic ( $$_TestCF ; Tac ( 1 ; "aaa" ) & Tac ( 2 ; "bbb" ) &
Tac ( 3 ;
Tic ( $$_TestCF ; Tac ( 1 ; "111" ) & Tac ( 2 ; "222" ) & Tac ( 3 ; "333" )  & Tac ( 4 ; "444" ) )
)  & Tac ( 4 ; "ddd" ) )

va donner

 

<V1>aaa</V1>
<V2>bbb</V2>
<V3>ccc</V3>
<V4>ddd</V4>
 -  -  -
<V1></V1>
<V2></V2>
<V3><V1>111</V1>
<V2>222</V2>
<V3>333</V3>
<V4>444</V4></V3>
<V4>ddd</V4>

 

l'imbrication ne fonctionne pas, les $z_A[n] s'écrasent, logique

 

essai 2 en passant une $z_A[xn] ( variable avec iteration aléatoire )

voici ce que cela donne

 

Tac devient

Let ([ $z_A[$x & n] = $x & " " & Param ]; "" )

 

et

 

Tic =

Let ( $x = Ent ( Alea * 50 ) + 1 ;

( Evaluate (
Substituer (
Fonction ;
"z_A[" ; "z_A[" & $x )
)) le fait pas donc

 

Tic =
Evaluate (
"let ( $x = Ent ( Alea * 50 ) + 1 ; \"\" ) &" &
Substituer (
Fonction ;
"z_A[" ; "z_A[" & $x ))

 

pas non plus

rien n'y fait, et il faut un double clic pour recharger $x, donc pas bon du tout

 

en allant plus loin, on s’aperçoit que $x change de valeur entre Tic et Tac,  ok... il suffit de changer

Tic en demandant le $x de tac pourtant passé par Tic.... et on obtient des choses de plus en plus étrange

et ça devient de plus en plus compliqué résultat le timing en prends un coup

et surtout, ça ne fonctionne pas ;)

 

testée ça aussi : Avec une cf  unique

Tic ( function )

l'ecriture donne ça

Tic ( $$_TestCF & Tic ( "aaa" ) + Tic ( "bbb" ) + Tic ( "ccc" ) + Tic (  "ddd" ) )

si elle me semble intéressante, elle ne fonctionne pas pour des fonctions imbriqués non plus

 

en dehors du fait que j'ai eu de drôle de résultat en jonglant avec Evaluate, suivant les imbrications, les parenthèses et les $ ou $$ et que cela m'amuse de voir certains résultats

je ne suis pas sure que ça soit suffisamment intéressant pour y perdre plus du temps ;)

 

Je retourne dans mes noix et mes orties,

 

Agnès

ok la page 3 ?

Share this post


Link to post
Share on other sites

En gros il te faut ajouter une initialisation d'une variable du type "variableLog" dans ton code, histoire de gérer ces conflits, et utiliser alors le contenu de cette variable VariableLog pour déterminer les valeurs qui seront déclarées

Share this post


Link to post
Share on other sites

Bon,

 

ok la page 3 ?

 

Je prends le risque tout de même.

 

 

les variables déclarées par Tac(), puis exploitées par Tic() pour évaluer la formule intégrée dans $$_maVariable, doivent être vidées une fois que Tic() a été exécutée

 

Je suis parti de ce constat, car à la lecture de tes expressions, je ne comprenais pas où ceci était véritablement effectué.

 

J'ai un peu changé le code de ton expression dans le Let( ), peut-être que ça change donc quelque chose au fonctionnement général, parce-que tout de même je ne suis pas dans ton cerveau...

 

Mais les imbrications sont fonctionnelles.

TacTic.fp7.zip

TacTic.fp7.zip

TacTic.fp7.zip

TacTic.fp7.zip

TacTic.fp7.zip

TacTic.fp7.zip

TacTic.fp7.zip

TacTic.fp7.zip

TacTic.fp7.zip

TacTic.fp7.zip

TacTic.fp7.zip

TacTic.fp7.zip

TacTic.fp7.zip

TacTic.fp7.zip

Share this post


Link to post
Share on other sites

Cool Page 3 !! enfin

Boudu oui ça marche

 

Je regarde illico !!!!!

J'avais laissé tombé :blush:

 

Merci !!

 

Agnès

Share this post


Link to post
Share on other sites

Non, j'ai déjà testé ce passage de variable :(

même de finir par les Quotter pour les entrer dans l'Evaluate

et ça le fait pas

 

regarde le résultat du 1, il est pour la 2eme partie

<V1>aaa</V1>
<V2>bbb</V2>
<V3>ccc</V3>
<V4>ddd</V4>
 -  -  -
<V1>111</V1>
<V2>222</V2>
<V3><V1>111</V1>
<V2>222</V2>
<V3>333</V3>
<V4>444</V4></V3>
<V4>ddd</V4>

 

alors que ça devrait etre

 

<V1>aaa</V1>
<V2>bbb</V2>
<V3>ccc</V3>
<V4>ddd</V4>
 -  -  -
<V1>aaa</V1>
<V2>bbb</V2>
<V3><V1>111</V1>
<V2>222</V2>
<V3>333</V3>
<V4>444</V4></V3>
<V4>ddd</V4>

 

le 3 est curieux, j'ai l'impression qu'il rajoute 4 résultats en trop ( 14 Vn au lieu des 10 demandés ) mais tu as bien compliqué l'imbrication en plus :)

 

il me semble que pour le 4 c'est idem, il devrait afficher d'abord 111 ; 222 et 333 et la non, il les donne même pas ( idem mes résultats )

la même que mes tests et mes résultats donc

 

Tic ( $$_TestCF ; Tac ( 1 ; "aaa" ) & Tac ( 2 ; "bbb" ) &
Tac ( 3 ;
Tic ( $$_TestCF ; Tac ( 1 ; "111" ) & Tac ( 2 ; "222" ) & Tac ( 3 ; "333" )  & Tac ( 4 ; "444" ) )
)  & Tac ( 4 ; "ddd" ) )

 

doit / devrait donner ça

<V1>aaa</V1>
<V2>bbb</V2>
<V3><V1>111</V1>
<V2>222</V2>
<V3>333</V3>
<V4>444</V4></V3>
<V4>ddd</V4>

 

Non ?

et ben FM veut pas.

 

Merci à Toi !

Agnès  :)

Share this post


Link to post
Share on other sites

Donc, comme tu les vidais en un autre endroit dans ton exemple, elles arrivaient vides, tandis qu'ici il reprend la dernière valeur évaluée. je ne vois en effet qu'un log initial et un compteur associé à ta fonction qui gère le nombre de calls pour aller chercher la valeur non plus dans une variable $args[n] mais au sein d'une variable $FunctionLog qui stockerait les valeurs.

Share this post


Link to post
Share on other sites

Bon,

 

A adapter bien entendu.

 

En prenant comme base de référence l'enchaînement imbriqué de fonctions suivant donc :

Tic ( $$_TestCF ; 	Tac ( 1 ; "aaa" ) & Tac ( 2 ; "bbb" ) & Tac ( 3 ; "ccc" )  & Tac ( 4 ; "ddd" ) )& "¶ -  -  - ¶" &Tic ( $$_TestCF ; 	Tac ( 1 ; "eee" ) & Tac ( 2 ; "fff" ) &	Tac ( 3 ;		Tic ( $$_TestCF ; Tac ( 1 ; "ggg" ) & Tac ( 2 ; "hhh" ) & Tac ( 3 ; "iii" )  & Tac ( 4 ; "jjj" ) 		)	)  	& Tac ( 4 ; "kkk" ) )

Afin de bien identifier l'ordre dans lequel les variables étaient déclarées, et en analyser de manière plus approfondie le processus, j'ai modifié les 2 fonctions personnalisées afin de disposer d'un output dans le Data Viewer pour chaque appel de Tic() et Tac()  :

J'ai fais un sorte que chaque appel de Tic() se charge de vider les variables pour commencer, mais ça n'aura aucune incidence sur le résultat final.

 

Cela donne ceci donc, qui correspondra sans doute à ce que tu avais toi-même observé :

$$post[1] = "TAC|LA VARIABLE $args[1] ETAIT VIDE ET CONTIENT DESORMAIS :aaa" $$post[2] = "TAC|LA VARIABLE $args[2] ETAIT VIDE ET CONTIENT DESORMAIS :bbb"$$post[3] = "TAC|LA VARIABLE $args[3] ETAIT VIDE ET CONTIENT DESORMAIS :ccc" $$post[4] = "TAC|LA VARIABLE $args[4]ETAIT VIDE ET CONTIENT DESORMAIS :ddd"$$post[5] = "TIC|<V1>aaa</V1><V2>bbb</V2><V3>ccc</V3><V4>ddd</V4> | VIDAGE DES VARIABLES $args en fin de fonction"$$post[6] = "TAC|LA VARIABLE $args[1] ETAIT VIDE ET CONTIENT DESORMAIS :eee"$$post[7] = "TAC|LA VARIABLE $args[2] ETAIT VIDE ET CONTIENT DESORMAIS :fff" $$post[8] = "TAC|LA VARIABLE $args[1] ETAIT DEJA CHARGEE ET SA VALEUR EST ECRASEE PAR : ggg"$$post[9] = "TAC|LA VARIABLE $args[2] ETAIT DEJA CHARGEE ET SA VALEUR EST ECRASEE PAR : hhh" $$post[10] = "TAC|LA VARIABLE $args[3] ETAIT VIDE ET CONTIENT DESORMAIS :iii"$$post[11] = "TAC|LA VARIABLE $args[4] ETAIT VIDE ET CONTIENT DESORMAIS :jjj" $$post[12] = "TIC|<V1>ggg</V1><V2>hhh</V2><V3>iii</V3><V4>jjj</V4> | VIDAGE DES VARIABLES $args en fin de fonction"$$post[13] = "TAC|LA VARIABLE $args[3] ETAIT VIDE ET CONTIENT DESORMAIS :<V1>ggg</V1><V2>hhh</V2><V3>iii</V3><V4>jjj</V4>"$$post[14] = "TAC|LA VARIABLE $args[4]ETAIT VIDE ET CONTIENT DESORMAIS :kkk"$$post[15] = "TIC|<V1></V1><V2></V2><V3><V1>ggg</V1><V2>hhh</V2><V3>iii</V3><V4>jjj</V4></V3><V4>kkk</V4> | VIDAGE DES VARIABLES $args en fin de fonction"

En gros les variables déclarées lors d'un Tac() écrasent les valeurs déclarées en précédence dans un autre Tac() pour un numéro d'argument identique. Si on ne les vide pas, les valeurs déclarées en dernier seront transférées et écraseront les arguments qui avaient été déclarés en premier mais n'ont pas encore été évalués. Si on les vide, comme je le fais à chaque fin de Tic(), les arguments seront vides bien entendu.

 

 

La solution à mon sens consiste donc bien à loguer tout ceci, en utilisant une seule variable qui serait en fait le contenu du log.

 

Pour le tester, j'ai donc initialisé une variable $$log et obtenu le résultat suivant, ceci étant une chaîne de texte, les arguments étant classés du dernier reçu au premier reçu, par fainéantise j'ai conservé le nommage sous la forme $args, mais ce ne sont plus des variables du tout.

Le log a donc cet aspect :

$args[4]|kkk$args[3]|<V1>ggg</V1><V2>hhh</V2><V3>iii</V3><V4>jjj</V4>$args[4]|jjj$args[3]|iii$args[2]|hhh$args[1]|ggg$args[2]|fff$args[1]|eee$args[4]|ddd$args[3]|ccc$args[2]|bbb$args[1]|aaa

Ce que l'on peut constater dans l'output des $$posts, et que je décompose plus bas pour mieux le démontrer, c'est que la fonction Tic() récupérera en toute logique toujours les premières valeurs du log. En fin de fonction Tic(), le log doit donc être purgé pour ne conserver que les valeurs qui n'ont pas encore été traitées dans un Tic.

 

J'ai donc modifié la fonction Tic() pour lui ajouter ce comportement

Definir ( [	$$call = $$call+1 ;	$$post[$$call] ="TIC|" & Evaluation ( Expression ) & "VIDAGE DES VARIABLES $args" ];	Evaluation ( Expression ) & Definir ( [ $args[1] = "" ; $args[2] = "" ; $args[3] = "" ; $args[4] = "" ]; "" )	& Definir ( [ $$log= purgeLog ( 1 ) ; $$log = purgeLog ( 2 ) ; $$log = purgeLog ( 3 ); $$log = purgeLog ( 4 ) ]; "" ))

Les variables $$call et $$post ne sont utiles ici que pour les outputs dans le data-viewer encore une fois, le vidage des variables $args est inutile puisqu'on ne les utiliseras plus.

 

La fonction purgeLog se charge de purger les premières valeurs du log, ne laissant dans le log que ce qui n'a pas encore été évalué éventuellement, on pourra l'incorporer directement dans Tic()

 

Voilà le code de la fonction purgeLog qui mérite d'être revisité, j'ai fais ça très vite :

Si( Occurrences ( $$log ;  "$args[" & argNumber & "]" ) ; 	Definir ( [		_string = "$args[" & argNumber & "]" ;		_posStart = Position ( $$log ; _string ; 1 ; 1 ) ;		_posEnd = Position ( $$log & "¶" ; "¶" ; _posStart ; 1 );		_length = _posEnd - _posStart ;		_extr= Extrait ( $$log & "¶" ; _posStart ; _posEnd-_posStart  );		_new= Remplace ( $$log & "¶" ; _posStart ; _length +1 ; "" )		] ;		_new	); $$log)

En gros, on recherche dans le log la première valeur $args[1] par exemple, et on supprimer le contenu de la ligne entière du log, pas trop compliqué je pense.

 

La fonction Tac() qui charge donc les arguments :

Definir ( [	_isempty = ($args[argOrder] = "");	$$call = $$call+1 ;	$$post[$$call] = "TAC|"  & Si(_isempty ; "LA VARIABLE $args[" & argOrder & "]" & "ETAIT VIDE ET CONTIENT DESORMAIS :" & Param; "LA VARIABLE $args[" & argOrder & "]" & "ETAIT DEJA CHARGEE ET SA VALEUR EST ECRASEE PAR : " & Param );	$args[$$call] = Param;	$$log= Cas ( $$log=""; "$args[" & argOrder & "]" & "|" & Param; "$args[" & argOrder & "]" & "|" & Param & "¶" & $$log )		] ;		Definir ( 		$args[argOrder] = Param;  "" ))

Encore une fois les $$call et $$post ne sont là que pour les outputs. j'ai gardé la déclaration de la variable $args[argOrder] mais c'est finalement inutile si on exploite le contenu de $$log.

 

Si on reprend ton calcul plus haut, et les outputs enregistrées dans la séquence des $$posts, on observera que :

 

- A la fin du 4ème call, le log contient ceci :

$args[4]|ddd$args[3]|ccc$args[2]|bbb$args[1]|aaa

Il sera donc totalement purgé à la fin du 5ème call correspondant à l'évaluation par l'appel de Tic() clôturant la première expression de ta formule. Tu verras en fin de ce post comment les valeurs sont incorporées à la formule au final, puisque les vairiables $args[n] ne sont plus utilisées.

 

- A la fin du 11ème call, et donc avant l'appel de Tic(), le log contiendra cette fois ceci :

$args[4]|jjj$args[3]|iii$args[2]|hhh$args[1]|ggg$args[2]|fff$args[1]|eee

Le log sera purgé par la fonction purgeLog ( ) à nouveau pour ne conserver que les 2 dernières valeurs qui ont été déclarées mais n'ont pas encore été utilisées dans un Tic()

 

Au terme du 14ème call, le log sera constitué de :

$args[4]|kkk$args[3]|<V1>ggg</V1><V2>hhh</V2><V3>iii</V3><V4>jjj</V4>$args[2]|fff$args[1]|eee

Le dernier Tic() prendra donc ces valeurs à son tour et purgera le log à son tour.

 

Désormais, c'est la formule a évaluer qu'il convient d'adapter, par exemple comme ceci :

Let ([Atr_1=getArgs(1); Atr_2=getArgs(2);Atr_3=getArgs(3);Atr_4=getArgs(4)];“<V1>” & Atr_1 & “</V1>” &“<V2>” & Atr_2 & “</V2>” &“<V3>” & Atr_3 & “</V3>” &“<V4>” & Atr_4 & “</V4>” )

ou getArgs (n ) est une fonction qui va chercher dans le $$log la première valeur qui a été attribuée à $args[n]

 

Il convient d'ajouter à cette formule le vidage de a variable $$log à la fin pour laisser la place pour une autre fonction

 

 

j'ai exploité un "|" pour séparer le paramètre de l'argument à reçevoir, mais peut-être que la solution devrait plutôt être une structure du type :

$args[2]|UUID

soit en modifiant ce qui est déclaré dans la fonction Tac()

"$args[" & argOrder & "]" & "|" & ObtenirUUID()

Puis donc la déclaration de la variable correspondante avec un emplacement unique

$args[code(UUID)]= ”ABC”

Le UUID pourra alors être utilisé pour l'initialisation d'une autre variable $$UUID en exploitant Code() qui contiendra l'argument alors, la fonction getArgs(n) récupérant alors dans le log l'uuid pour cibler la bonne variable et en récupérer l'argument. Le log ne sert donc plus que de registre, et L'UUID assure l'unicité des appels pour chaque fonction en tout cas à mes yeux, plus aucun risque de mauvais croisements entre les différentes fonctions et appels successifs. Il faudra prévoir des les vider également comme tu as vidé le log quoique...

 

Il convient bien entendu de changer cette variable $$log en une variable $log et de virer les autres $$, et de voir si ça peut marcher de manière générique. Et de contrôler si toutes les imbrications seront réellement évaluées de la même manière.

 

Toi seule pourra juger des performances, il y a un peu de "bricolage" tout de même sans que ça anéantisse la portabilité générale je pense, mais on utilise plus qu'une seule variable, même si encore une fois pour plus de garantie je posterai tout de même les arguments dans des n variables pour mieux en récupérer le contenu. Je ne sais pas si ça pénalise vraiment les performances, à vrai dire tout est évalué par paquet à chaque clôture d'un Tic().

 

A bien y regarder, en tout cas, l'expression suivante :

Tic ( $$_TestCF ;		Tac ( 1 ;			Tic ( $$_TestCF ; 				Tac ( 1 ; "111" ) & Tac ( 2 ; "222" ) & Tac ( 3 ; "333" )  & 				Tac ( 4 ; 				Tic ( $$_TestCF ; Tac ( 1 ; "ABC" ) & Tac ( 2 ; "DEF" ) & Tac ( 3 ; "GHI" )  & Tac ( 4 ; "JKL" ) ))			 ) 		)		& Tac ( 2 ; "xyz" ) & Tac ( 3 ; "000" ) & Tac ( 4 ; "888" )	)  & Tic ( $$_TestCF ; Tac ( 2 ; "222" ) & Tac ( 3 ; "333" ) & Tac ( 4 ; "444" ) )

restitue le résultat suivant :

<V1><V1>111</V1><V2>222</V2><V3>333</V3><V4><V1>ABC</V1><V2>DEF</V2><V3>GHI</V3><V4>JKL</V4></V4></V1><V2>xyz</V2><V3>000</V3><V4>888</V4><V1></V1><V2>222</V2><V3>333</V3><V4>444</V4>

L'expression :

Tic ( $$_TestCF ;		Tac ( 1 ;			Tic ( $$_TestCF ; 				Tac ( 1 ; "111" ) & Tac ( 2 ; "222" ) & Tac ( 3 ; "333" )  & Tac ( 4 ; "444" )			 ) 		)		& Tac ( 2 ; "xyz" ) & Tac ( 3 ; "000" ) & Tac ( 4 ; "888" )	)  & Tic ( $$_TestCF ; Tac ( 2 ; "222" ) & Tac ( 3 ; "333" ) & Tac ( 4 ; "444" ) )

donne :

<V1><V1>111</V1><V2>222</V2><V3>333</V3><V4>444</V4></V1><V2>xyz</V2><V3>000</V3><V4>888</V4><V1></V1><V2>222</V2><V3>333</V3><V4>444</V4>

Share this post


Link to post
Share on other sites

La vache :)

Tu lâches pas hein :P:D:)

Morte de rire ;)

 

Oui, j'avais les même conclusions, j'ai forcé le décorticage du résultat en désactivant les //Evaluate(') pour en voir les imbrications, qui sont correctes dans les 2 cas ( Cfs et Tic), mais pour mieux le voir, je m'en suis fait  une sortie Json, plus propre et très lisible :rolleyes:

 

J'ai regardé en diagonal et ça va le faire ! je reprends d'en haut et te dis

 

Merci !

 

Agnès

Share this post


Link to post
Share on other sites

Normalement, Benka devrait sortir du bois bientôt...

Share this post


Link to post
Share on other sites

Hello,

 

Normalement, Benka devrait sortir du bois bientôt...

 

Il a du croiser l'Autobus et l'Antibus ;)

Share this post


Link to post
Share on other sites

Coucou,

 

Tu lâches pas hein :P:D:)

 

Il reste encore des trucs dans FileMaker qui méritent d'être testés, même si c'est toujours avec les moyens du bord ;)

 

Ces variables qui s'entrechoquaient, sincèrement, ça ne répondait à aucune logique. Pour la gestion des fonctions, FileMaker repose nécessairement sur une programmation procédurale où les effets de bords permettent naturellement à une fonction de recevoir des arguments mais aussi de modifier des variables extérieures à sa propre procédure. Puisque le principe est bien présent, il n'y avais aucune raison valable pour qu'il ne soit pas géré par le moteur de calcul. Je craignais en fait à la lecture de tes différents constats qu'une variable concernant une procédure déjà clôturée puisse être modifiée à posteriori, mais ce n'est fort heureusement pas le cas. Les variables sont nécessairement déclarées, évaluées puis vidées suivant un processus donné, et les procédures enchaînées correctement, réputées clôturées quand elles ont été évaluées.

Si j'avais constaté que des variables étaient déclarées dans un ordre ne répondant à aucun bon sens, tu aurais pu compter sur moi pour en rajouter une couche. o:)

 

Il n'y a pas de raison pour que le tout ne soit pas exécuté correctement si on procède à l'évaluation par paquet, tout en conservant l'historique des variables déclarées, et aucune chance qu'une variable puisse échapper au contexte de l'évaluation pour se confondre dans un autre bloc, voire dans une autre fonction, puisque FileMaker n'exécute pas plusieurs fonctions à la fois, mais gère des piles. Tout dépend donc de la bonne gestion du log.

 

Reste à voir donc la performance générale de cette fonction

Share this post


Link to post
Share on other sites

Bon,

 

juste pour vous tenir informés...

De retour de foret avec girolles, chanterelles, pieds de mouton, cèpes et bolet a pieds rouge, châtaignes, dont pas mal de bogues reçues sur la tête, mais absolument pas de Benca <_<

 

Et, 7 ans après, je comprends enfin ceci :

Ugo - 2008 - 02:22

(...)

Pour ceux qui ne comprennent pas pourquoi je m'interroge, imaginez un instant recevoir un mail dont le contenu est "copies le contenu du prochain mail dans le data-viewer" et le contenu du second donnes-ça :
...je ne suis pas parvenu à le restituer dans la page de ce Forum sans erreur, dommage il perd de son côté "barge" , mais svp, scrollez, scrollez... ] ...

Cela fait 3 jours que je me prends de drôles de mails le matin, avec fichier à décortiquer :)

Chaque mail me démontre une nouvelle façon d'imbriquer l'ensemble, de loguer déloguer, de Kill les logs en appelant les arguments passée dans des variable en empilant l'ensemble, de Tac et de Tic qui s'arrondissent et se passe les infos

 

Bref, pour ceux qui étaient inquiets, le dossier avance, nous en somme à 4 fonctions que nous tentons de passer en 2 avec récursivité s'il vous plait :)

Mais le résultat est là, le passage de paramètres se fait nickel, la performance est en chute pour le moment mais ratrappe sont retard, et l'on se rapproche de la fonction idéale avec nombre de paramètres variables

 

Rassure Toi Fabrice, ou pas d'ailleurs, mais même avec ses cachets, ça ne fonctionne pas ( non mais ! )

 

C'est tout :)

 

Agnès

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...