Aller au contenu
  • 0
holir

Création et instanciation d'une variable sous la forme d'un tableau/array

Question

Bonjour à tous,

Je viens ici car j'ai un problème de taille ! J'aimerai reproduire un algorithme de calcul que j'ai fais en python il y a un moment avec Filemaker or pour cela j'aurai besoin de plusieurs variables tableau et je ne sais pas si cela est possible du moins je ne sais pas comment instancier la variable j'aimerai par exemple que variable1 prenne les valeurs [0.8;1;1;1;0.9] et que je puisse naviguer ensuite en faisant par exemple variable[position] avec des boucles,etc, je devrai aussi ensuite rajouter des valeurs dans cette variable tableau mais c'est encore une autre histoire ! Je trouve que la partie algorithmique de Filemaker est assez spéciale avec le fonctionnement étrange des boucles et des variables je suis un peu perdu ! Je poste l'algo python en question si jamais cela parle à quelqu'un (Seulement pour info c'est un algo qui permet de calculer le coefficient d'absorbtion acoustique global d'un matériau à partir de ces coefficients acoustiques en octaves)  Voilà si jamais quelqu'un peut m'éclairer ce serait un plaisir :P

AlgoPythonAlphaGlobal.png

Partager ce message


Lien à poster
Partager sur d’autres sites

17 réponses à cette question

Messages recommandés

  • 0

Bonjour, je viens de trouver une solution qui est de définir variable case par case en changeant à chaque fois le champ "Valeur n°" mais pour les tableaux à 30 cases que je devrai faire plus tard 30 lignes juste pour instancier la variable me parait assez long et me fait assez peur :( n'y aurait-il pas une supercherie pour faire tout cela plus vite ? :D

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

En acoustique, je n'y connais rien. En Python, non plus...:unsure:

J'ai déjà cru comprendre que FileMaker déroutait beaucoup les personnes qui viennent des langages informatiques et que du coup, elles laissaient tomber.

Comment connais-tu les valeurs de la liste que tu veux mettre dans ta variable ? A partir d'une rubrique, d'une table, ou l'écris-tu en dur dans un script ?

A partir du moment où tu a cette liste, tu la déclares dans un paramètre de script, et ensuite, tu appelles chaque valeur de cette liste dans une boucle en fonction d'un compteur.

PS Le compteur de la boucle de ton script $moncompteur est une variable que tu incrémentes à chaque boucle $moncompteur ( $moncompteur + 1 ), il peut-être extrêmement  élevé, puis tu utilises la fonction obtenirvaleur ( $mavariable ; $moncompteur ) pour extraire les données.

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Bonjour,

pour les problèmes de taille, il y a plein d'autres ressources sur le web ;)

Il n'y a pas à proprement parler de variables tableau en FileMaker.

Les variables "mutlivaluées" comme tu les as trouvées ne sont pas des tableau parce que tu ne peux faire aucune opération sur une rangée ou une colonne. Tu ne peux même pas savoir combien de valeurs sont renseignées ! Il faut voir $var[1] et $var[2] comme deux variables totalement distinctes.

Chacun y va donc de sa petite technique, à base de XML ou de variables structurées, ou désormais de JSON (FileMaker 16).

Mais tu couperas difficilement à des variables décrivant la structure de ta variable complexe.

Néanmoins, pour répondre strictement à ta dernière question, tu peux faire ceci :

Définir variable [ $iterations ; 30 ]
Boucle
  	Fin de boucle si [ $i >= $iterations ]
	Définir variable [ $i ; $i + 1 ]
  	Définir variable [ $valeur ;  "la valeur que tu veux" ]
  	Définir variable [ $tavariable[$i] ; $valeur ] // la subtilité est ici : le numéro de répétition peut être défini par une variable
Fin de boucle

 

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Bonjour,

En effet l'ensemble des fonctions et la façon de voir les script qu'utilise Filemaker est assez déroutante mais je ne laisserai pas tomber !! :D 

Ceci dit, les liste de valeurs à mettre dans ma variable proviennent soit de plusieurs rubriques, soit sont des valeurs en dur. Je commence à discerner la méthode pour utiliser de telles variables avec Filemaker ! Merci de ton aide

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

D'accord j'y vois un peu plus clair maintenant, je pense que mon script Filemaker sera un peu plus long que mon algorithme en python (si j'y arrive) :D 

Merci de votre aide en tout cas je vais essayer de m’atteler à la tâche maintenant !

 

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0
il y a une heure, holir a dit :

D'accord j'y vois un peu plus clair maintenant, je pense que mon script Filemaker sera un peu plus long que mon algorithme en python (si j'y arrive) :D 

Merci de votre aide en tout cas je vais essayer de m’atteler à la tâche maintenant !

 

Heureux de savoir que nous sommes au moins 2 . La vitesse de calcul de FileMaker Est déprimante comparée à Python. Si, tes algorithmes font beaucoup de calcul mathématique, et qu'ils sont déjà écrits et débogué, je t'invite à  regarder le plug-in pour FileMaker «bBox» disponible gratuitement la https://www.beezwax.net/products/bbox. Tu y gagneras en vitesse d'exécution et en heures d’optimisation. L'idée est de déléguer à  Python les calculs mathématiques. 

Si tu utilisais Python plutôt du côté procédural tu trouveras une route  dans FileMaker. Par contre si tu utilisais Python pour son côté objet là la route est longue. Les notions de modularité, de variables structurées et les techniques d’encapsulation sont à construire de A à Z.  J’y travaille depuis 2 ans. Avec un résultat étonnant. Alors, n’hésite pas à poser des questions.

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Dommage le plug-in a l'air pas mal mais il n'est que pour mac OS ...

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0
il y a 26 minutes, holir a dit :

Dommage le plug-in a l'air pas mal mais il n'est que pour mac OS ...

Regarde du coté de MBS plugin il est payant, mais pas cher pour ce qu'il fait. Regarde «RunTask» ou «WindowsScript» 

http://www.mbsplugins.eu/index.shtml

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Sinon effectivement mes algorithmes sont déjà écrits et debogué, ce sont des "petits" algos de calculs pas trop complexes mais qui utilisent des fonctionnalités que Filemaker n'a pas visiblement, comme le mentionnait Fabrice plus haut par exemple le fait de récupérer le nombre de valeurs d'une multivaluée (fonction "len()" en python) ou encore ajouter des valeurs à la fin d'une variable liste sans connaitre sa taille (".append()" en python) tant de fonction que je n'arrive pas à reproduire le résultat dans Filemaker ... Je vais voir si je ne peux pas trouver des alternatives sur comment intégrer les resultats d'algorithmes python ou autre language de programmation sur Filemaker, je vais étudier le lien que tu m'as envoyé

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0
il y a 9 minutes, holir a dit :

Sinon effectivement mes algorithmes sont déjà écrits et debogué, ce sont des "petits" algos de calculs pas trop complexes mais qui utilisent des fonctionnalités que Filemaker n'a pas visiblement, comme le mentionnait Fabrice plus haut par exemple le fait de récupérer le nombre de valeurs d'une multivaluée (fonction "len()" en python) ou encore ajouter des valeurs à la fin d'une variable liste sans connaitre sa taille (".append()" en python) tant de fonction que je n'arrive pas à reproduire le résultat dans Filemaker ... Je vais voir si je ne peux pas trouver des alternatives sur comment intégrer les resultats d'algorithmes python ou autre language de programmation sur Filemaker, je vais étudier le lien que tu m'as envoyé

Si tu as beaucoup de gros calculs mathématique l'intégration de résultat provenant d'autre appli est une voie plus sure. Si tu veux manipuler des variables stucturées à la python c'est faisable dans FileMaker j'ai fait une démo à la dernière Fm Conférence.  Regarde la présentation «Une heure de gros mots» sur ce site  et télécharge le fichier.

Dans les fonctions personnalisées il y a un groupe de fonctions personnalisées qui commence par rLisp_ elle te permettrons de mimer append() et len(). Si le sujet t'intéresse encore ;-) recherche sur YouTube «Construire des variables structurées» par Sylvain Parent (c'est moi) j'y explique la problématique simple à résoudre dans python mais pas évidente dans FileMaker.

Ceci dit, je ne connais pas la complexité de tes calculs ni les fonctions auxquelles elles font appel. Ça vaut certainement le cout d'expliquer ton calcul et de demander comment le faire en FileMaker. Il y a des gens très fort en «turnauround» sur tous les sites FileMaker. Pour les variables structurées il me fera plaisir de t'aider.

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Super je vais regarder tout ça ! Mes calculs ne sont pas très complexes je pense que j'arriverai à m'en sortir ! Je reviendrai expliquer mon calcul si jamais je n'arrive pas à mettre en place tout cela, merci pour les ressources en tout cas je vais aller consulter ça :P

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Re-bonjour bon j'arrive à m'en sortir j'ai déjà fais traduis un de mes algorithmes (le plus simple) de python en Filemaker et cela a fonctionné ! J'ai donc enchaîner avec le deuxième et là ce n'est pas la même histoire ça plante (petit sablier à la place de la souris et "esc" qui clignote à coté) ! Cela fait 20mn que je relis mes 150 lignes de codes sans rien trouver, j'imagine que cela vient surement d'un problème de boucle infinie ou de faute de frappe sur une variable mais comme il n'y a aucun message d'erreur ni rien c'est complexe ... Je viens donc demander si il existe une sorte de debugger de script Filemaker, un journal d'erreur de script ou une fonction cachée que je n'aurais pas vu pour trouver d'où vient le problème ? :unsure:

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Tu auras besoin de FileMaker Pro Advanced c'est la version qui a un déboggeur. Quelle version as-tu?

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

N'y aurait-il pas au moins la possibilité de copier le code d'un script pour le mettre dans un autre endroit (ex : notepad++, etc) pour pouvoir avoir accès au moins aux fonctions de recherches car je n'arrive pas non plus à faire de copier-coller nulle part ...

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Désolé, pas de déboggage en dehors de la version Advanced. Pour le copier-coller le plugIn MBS en version gratuite te permet de faire le copie coller vers NotaPad++ Attention il ne copie que la partie apparente du code et tu ne peux pas recoller dans FileMaker. Je sais c'est dur... mais c'est comme ça.

Si tu n'as pas accès à Advanced la route sera longue, très longue. D'autant plus que la version Advanced te donneras accès au fonctions personnalisées qui ressemblent un plus à ce que tu connais en python. Si tu n'as pas cette possibilité, je te recommande de scinder ton script en plusieurs petits scripts et de mettre une copie des réponses des sous scripts dans des rubriques globales pour te permettre de voir le résultat après execution. Pour faire cela il te faudra maitriser le passage de paramètres entre les scripts. Tu commence dans FileMaker avec sa partie la plus faible. Tu peux toujours demander de l'aide sur ton script mais essaie de le scinder en petite partie. 150 lignes dans une discussion c'est long.

 

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Bonjour,

Le plus "simple" est d'utiliser les listes.

Pour ta variable ref[] par exemple, tu crées un rubrique ref, type texte et tu saisis à l'intérieur tes valeurs séparées par un 'return'.
Après, tu accèdes à l'élément avec le calcul : ObtenirValeur ( ref ; Index ).
Pour obtenir le nombre d'élément de la liste : DecompteValeurs ( ref ).
Pour ajouter un élément à la liste : ref & "¶" & nouvelle_valeur. Donc somme.append(ecart) se traduit en : somme & "¶" & $ecart.

Après, pour remplacer une valeur de la liste par une autre, c'est un peu plus compliqué. Il ne faut pas de doublon dans la liste.
Le calcul est de cette forme : Substituer ( Liste ; ObtenirValeur ( Liste ; Index ) ; NouvelleValeur )

Pour le reste, faire juste attention aux conditions de sortie de la boucle, 'break' n'existant pas dans FileMaker.

Mais sans version Advanced de FileMaker tu vas galérer grave :o

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant


  • En ligne récemment   0 membre est en ligne

    Aucun utilisateur enregistré regarde cette page.

×