Page 1 sur 1

[Unity Pro 12] conversion d'un tableau d'entiers en type DT

Posté : 09 août 2019, 15:34
par Laurent
Bonjour,

Dans un programme de M580, je veux convertir un tableau d'entiers contenant la date et l'heure en format BCD, en type DT, pour passer le résultat en entrée de la fonction WRTC_DT().
Le code :

Code : Tout sélectionner

nouv_date[ 1 ] := word_to_int( API_S_entrees[ 5 ] );
nouv_date[ 2 ] := word_to_int( API_S_entrees[ 6 ] );
nouv_date[ 3 ] := word_to_int( API_S_entrees[ 7 ] );
nouv_date[ 4 ] := word_to_int( API_S_entrees[ 8 ] );
(*nouv_date : tableau défini comme ARRAY [ 1..4 ] OF INT *)
(* API_S_entrees : tableau défini comme ARRAY [0..9] OF WORD *)

nouv_dt := ARINT_TO_DT( IN := nouv_date );
(* nouv_dt est définie comme une variable de type DT *)

(* l'objectif étant de pouvoir enchainer sur ceci : *)
WRTC_DT( IN := nouv_dt );
Pour la fonction ARINT_TO_DT(), Unity Pro indique une erreur "E1208: l"utilisation des tableaux dynamiques est inhibée".

Je ne comprends pas cette erreur:
- qu'est-ce qu'un tableau dynamique ?
- pourquoi nouv_date, telle que définie ci-dessus, est-elle vue comme un tableau dynamique (je ne vois pas ce qu'il y a de dynamique, la taille est fixée, le type des éléments aussi) ?

Bien sûr, dans les options du projet, je peux activer l'option Autoriser les tableaux dynamiques (ANY_ARRAY_XXX), mais si cette option est désactivée parce que imposé par le client, comment s'en sortir ?

Re: [Unity Pro 12] conversion d'un tableau d'entiers en type DT

Posté : 09 août 2019, 16:52
par itasoft
slts,
essayer ça:

DTX:=ARINT_TO_DT(mouv_date);
(* DTX défini comme type DT *)

(* l'objectif étant de pouvoir enchainer sur ceci : *)
WRTC_DT(DTX);

Re: [Unity Pro 12] conversion d'un tableau d'entiers en type DT

Posté : 12 août 2019, 10:23
par Laurent
En fait, je crois comprendre que le problème ne vient pas de mes variables, mais de l'EF ARINT_TO_DT() : le type de données du paramètre IN est ANY_ARRAY_XXX, c'est donc lui qui travaille avec un tableau dynamique.

Donc, pas 36 solutions :
soit on active la gestion des tableaux dynamiques pour pouvoir utiliser les fonctions élémentaires qui travaillent avec,
soit on se paluche la conversion de type à l'ancienne.

J'ai activé la gestion des tableaux dynamiques, ça me paraît plus propre de travailler avec les EF plutôt que de bidouiller avec un DFB perso juste pour ça.
Merci quand même de ton attention, itasoft.