Page 1 sur 2

[Unity] Tableau à plusieurs dimensions

Posté : 16 déc. 2022, 11:59
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.

Re: [Unity] Tableau à plusieurs dimensions

Posté : 16 déc. 2022, 14:35
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>


Re: [Unity] Tableau à plusieurs dimensions

Posté : 16 déc. 2022, 15:32
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 !!!!!!!!!!!!!!!!

Re: [Unity] Tableau à plusieurs dimensions

Posté : 16 déc. 2022, 16:42
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)

Re: [Unity] Tableau à plusieurs dimensions

Posté : 17 déc. 2022, 02:38
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;

Re: [Unity] Tableau à plusieurs dimensions

Posté : 17 déc. 2022, 11:13
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

Re: [Unity] Tableau à plusieurs dimensions

Posté : 19 déc. 2022, 11:27
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...

Re: [Unity] Tableau à plusieurs dimensions

Posté : 19 déc. 2022, 11:57
par itasoft
slts,
je regarde ça,
mettre la déclaration du tableau ARRAY[.................

Re: [Unity] Tableau à plusieurs dimensions

Posté : 19 déc. 2022, 12:24
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)

Re: [Unity] Tableau à plusieurs dimensions

Posté : 19 déc. 2022, 12:49
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