[Unity] Tableau à plusieurs dimensions

Forum traitant des automates industriels de marque Schneider - Telemecanique
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7807
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

[Unity] Tableau à plusieurs dimensions

Message par itasoft »

On peut déclarer des tableaux à plusieurs dimensions EX :myTable ARRAY [0..15,0..1] OF INT
C’est bien ça part d’un bon sentiment, mais comment on isole une dimension pour faire une recherche ou un tri dessus, j’ai pas trouvé la syntaxe.
Automaticien privé (de tout)
itasoft@free.fr
MiGaNuTs
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 1579
Enregistré le : 12 nov. 2015, 21:02
Localisation : 45 - Loiret
Contact :

Re: [Unity] Tableau à plusieurs dimensions

Message par MiGaNuTs »

Salut
Un petit bout de code ou je boucle sur les 2 dimensions d'un tableau, a sauvegarder sous exemple.xbd puis importer dans unity.
Enfin juste sous cette forme la tu devrais deja le comprendre je pense.

Code : Tout sélectionner

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<FBExchangeFile>
	<fileHeader company="Schneider Automation" product="Unity Pro XL V13.1 - 180823C" dateTime="date_and_time#2022-12-16-14:30:44" content="Fichier source bloc fonctions" DTDVersion="41"></fileHeader>
	<contentHeader name="Projet" version="0.0.1191" dateTime="date_and_time#2022-8-31-10:51:6"></contentHeader>
	<FBSource nameOfFBType="ClearInputBuffer" version="0.11" dateTime="dt#2022-06-28-14:45:47">
		<comment>Efface les datas d'un buffer de com</comment>
		<attribute name="TypeCodeCheckSumString" value="2467"></attribute>
		<attribute name="TypeSignatureCheckSumString" value="D0F9"></attribute>
		<inputParameters>
			<variables name="Clear" typeName="BOOL">
				<attribute name="PositionPin" value="2"></attribute>
			</variables>
		</inputParameters>
		<inOutParameters>
			<variables name="Buff" typeName="ARRAY[0..3,0..4] OF INT">
				<attribute name="PositionPin" value="1"></attribute>
			</variables>
		</inOutParameters>
		<privateLocalVariables>
			<variables name="i" typeName="INT"></variables>
			<variables name="j" typeName="INT"></variables>
			<variables name="tmp" typeName="INT"></variables>
		</privateLocalVariables>
		<FBProgram name="main">
			<STSource>If Clear then
  tmp:=Buff[0,1]; (* Celui la il faut pas l'effacer *)
  for i:=0 to 3 do
     for j:=0 to 4 do
        Buff[i,j]:=0;
     end_for;
  end_for;
  Buff[0,1]:=tmp;
end_if;
</STSource>
		</FBProgram>
	</FBSource>
</FBExchangeFile>

Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7807
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: [Unity] Tableau à plusieurs dimensions

Message par itasoft »

slts,
on s'est pas compris, je cherche l'instruction , si c'est pour se le palucher à la mano, je sais faire tout seul !!!!!!!!!!!!!!!!
Automaticien privé (de tout)
itasoft@free.fr
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2142
Enregistré le : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: [Unity] Tableau à plusieurs dimensions

Message par philou77 »

Salut antoine !
Si TABLEAU est un ARRAY [0..2,0..10] par exemple


les intructions sur les tableaux ne travillent QUE sur la dimension PREMIERE DIMENSION indiquée.

un FIND_EQ_xx TABLEAU[0] ne cherche QUE dans la première dimension !

c'est nul !!
donc ST et boucle et tout se taper... le tri c'est galère a faire et ça rend du temps (bien plus qu'un cycle automate)
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7807
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: [Unity] Tableau à plusieurs dimensions

Message par itasoft »

un FIND_EQ_xx (TABLEAU[0],xx) ne cherche QUE dans la première dimension !
---------
il faut tester avant
-------------
(* TABLEAU ARRAY[0..5,0..1] *)

TABLEAU[0][0]:=100;TABLEAU[0][1]:=1;
TABLEAU[1][0]:=200;TABLEAU[1][1]:=2;
TABLEAU[2][0]:=300;TABLEAU[2][1]:=3;
TABLEAU[3][0]:=400;TABLEAU[3][1]:=4;
TABLEAU[4][0]:=500;TABLEAU[4][1]:=5;
TABLEAU[5][0]:=600;TABLEAU[5][1]:=6;

XX:=FIND_EQ_ARDINT(TABLEAU[0],600);
YY:=FIND_EQ_ARDINT(TABLEAU[1],6);

if XX<0 and YY<0 then
Message:='ça marche pas';
end_if;
Automaticien privé (de tout)
itasoft@free.fr
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2142
Enregistré le : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: [Unity] Tableau à plusieurs dimensions

Message par philou77 »

Bah j’ai testé avant d’écrire 🤔

Avec un tableau de word et Control expert..
Avec recherche et tri.
Étrange..

Je testerai à nouveau lundi
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2142
Enregistré le : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: [Unity] Tableau à plusieurs dimensions

Message par philou77 »

Salut !!

J'ai écris cela :
Test tableau 2 dimensions.jpg
Et je confirme que !

si Id vaut 0 :
La recherche d'autre valeurs que 1,2 ou 3 provoque le résultat -1
Le tri du tableau ne se fait que sur la dimension de valeur 0 soit [0,0], [0,1], [0,2] !!

si Id vaut 1 :
La recherche d'autre valeurs que 10,20 ou 30 provoque le résultat -1
Le tri du tableau ne se fait que sur la dimension de valeur 1 soit [1,0], [1,1], [1,2] !!

si Id vaut 2 :
La recherche d'autre valeurs que 100,200 ou 300 provoque le résultat -1
Le tri du tableau ne se fait que sur la dimension de valeur 2 soit [2,0], [2,1], [2,2] !!

Ca recherche bien dans la SEULE PREMIERE DIMENSION du tableau en donnant le n° de ligne de l’occurrence trouvée.


Faut que je fasse une boucle pour chercher dans tout le tableau !
La valeur retournée reste le n° de la ligne, l'index de boucle sera la valeur de la dimension...
Modifié en dernier par philou77 le 19 déc. 2022, 12:27, modifié 1 fois.
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7807
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: [Unity] Tableau à plusieurs dimensions

Message par itasoft »

slts,
je regarde ça,
mettre la déclaration du tableau ARRAY[.................
Automaticien privé (de tout)
itasoft@free.fr
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2142
Enregistré le : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: [Unity] Tableau à plusieurs dimensions

Message par philou77 »

la déclaration est du type

ARRAY [0..2,0..2] of word

En même temps, c'est logique que cela ne regarde que dans une dimension, vue que tu récupères en résultat un rang unique ...
Et donc ça isole bien une dimension, comme tu voulais dans ton 1er post.

Par contre, j'ai pas trouvé pour isoler une dimension autre que la première (au vu de la structure de l'instruction, je pense que c'est pas possible sans bidouiller un peu)
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7807
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: [Unity] Tableau à plusieurs dimensions

Message par itasoft »

slts,
ton tableau prête à confusion faire avec:
ARRAY [0..5,0..1] of word
Moi je comprends avoir 2 tableaux
Un Tableau A de taille 6 et d’index 0
Un Tableau B de taille 6 et d’index 1
Je veux faire une recherche sur le tableau A de taille 6 et une recherche sur le tableau B de taille 6
Automaticien privé (de tout)
itasoft@free.fr
Répondre