• Welcome to Diskuse2 Elektrika.cz. Please login or sign up.
 

Je toto chyba v mosaic při určité definici vlastního typu proměnné ?

Started by Jiri Dvorak, 27.01.2014, 22:51

previous topic - next topic

Jiri Dvorak

K věci :
(vynechám zdlouhavý popis z příkladu je problém celkem jasný)

TYPE
 type_pok : STRUCT        
   q : ( a, b, c);                                      // zde je problém
   arb : ARRAY [0..20] OF BOOL;         // zde je  problém


 END_STRUCT;
 
END_TYPE

VAR_GLOBAL RETAIN
 arb2 : ARRAY [0..20] OF BOOL;
 var_tp : type_pok;
END_VAR


s tímto vytvořeným typem nechodí toto ( pouze kód pro test):

for  y := 0 to 20 do
  arb2[y] := true;
  var_tp.arb[y] := true;
end_for;


překvapivě toto jde:

var_tp.arb[1] := true;

a druhé ( tedy pro mě ) překvapení, pokud:

TYPE
 type_pok : STRUCT        
    arb : ARRAY [0..20] OF BOOL;
    q : ( a, b, c);

END_STRUCT;
 
END_TYPE


Tak je zase po problému........





Jindřich Kubec

váš dotaz jsem předal kolegům z vývoje prostředí Mosaic, předpokládám, že se do několika dní ozvou.

Milan Bydžovský

Překladač bohužel dovolil konstrukci, se kterou neumí pracovat, a to definice enumerace jako instance.

Problém lze obejít následovně:

Code Select
TYPE
  Tq : ( a, b, c);                                   // definice enumerace
  type_pok : STRUCT
    q : Tq;                                            //pouziti enumerace
    arb : ARRAY [0..20] OF BOOL;
  END_STRUCT;
END_TYPE


Následné operace jsou pak již korektní