close Warning: Can't synchronize with repository "(default)" (/var/svn/mms does not appear to be a Subversion repository.). Look in the Trac log for more information.

Opened 14 years ago

Closed 14 years ago

Last modified 14 years ago

#483 closed defect (fixed)

Al crear una variable con el mismo nombre que la que hay en dependences (por error), se cae tol.

Reported by: mlocubiche Owned by: Pedro Gea
Priority: major Milestone: Release 0.6
Component: Variables Keywords:
Cc:

Description

Buenas, ayer por error (copy-paste), defini una
variable con el mismo nombre de la que tiene en
dependences. Al intentar obtener los datos se cae
tol y no deja rastro. Creo que seria bueno trazar
este tipo de errores para que se sepa que nos
hemos equivocado. Gracias, pongo aqui un ejemplo
sencillo que reproduciria el error;

  // Una vez generado un modelo
  MMS::@DataSet  localDs = model::GetDataSet(0);

  MMS::@Variable varEjemplo = localDs::ReplaceVariable(
    [[
      Text _.type       = "Serie";
      Text _.name       = "Ejemplo";
      Text _.expression = "Serie CalInd((WD(6)+WD(7)), Diario)"
    ]]
  );
  
  MMS::@Variable varEjemplo2 = localDs::ReplaceVariable(
    [[
      Text _.type       = "Serie";
      Text _.name       = "Ejemplo";
      Text _.expression = "Serie CalInd(%1+WD(5), Diario)";
      Set  _.dependences  = SetOfText( 
        "Ejemplo"
      )
    ]]
  );

En el ejemplo anterior al graficar la varEjemplo2 se caería tol

Un saludo,

Manuel Locubiche Malaxechevarria

Change History (4)

comment:1 Changed 14 years ago by Pedro Gea

Component: GeneralVariables
Milestone: GUI 0.6Release 0.6
Status: newaccepted

comment:2 Changed 14 years ago by Pedro Gea

Resolution: fixed
Status: acceptedclosed

(In [2203]) Se crea un método _.CheckDependencesCycle que permite comprobar si en las dependencias de una variables hay una vinculación con un determinado identificador.
También se añade un método _.AvoidDependencesCycle que impide la formación de ciclos. Este método se llama automáticamente cuando una variable se crea o cambia.
La única manera de evitar el ciclo es romper las ligaduras establecidas mediante las dependencias, de modo que éstas se eliminarán y se comunicará el cambio mediante un mensaje de advertencia.
Se itera la versión de MMS.
Closes #483

comment:3 Changed 14 years ago by Pedro Gea

En el ejemplo que se indica se obtendrían los siguientes mensajes:

ERROR: [1] [@Variable::_.CheckDependencesCycle] La variable 'Ejemplo' depende de sí misma a través de: 'Ejemplo'.

...

Warning: [1] [@Variable::_.AvoidDependencesCycle] Se deshacen las dependencias de 'Ejemplo':
Set _.dependences = [[  [[  "Ejemplo", ""]]]]

comment:4 Changed 14 years ago by Pedro Gea

(In [2208]) Se modifica el método _.CheckDependencesCycle para que no se va afectado por las dependencias semidestruidas en los procesos de destrucción de objetos.
Refs #483

Note: See TracTickets for help on using tickets.