Difference between revisions of "Error Messages/40616"
m (→Cause) |
m |
||
(4 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | + | [[Category: Error messages]] | |
− | + | == Error message examples == | |
− | + | :<code>''You cannot assign to a slice or subscript of a global variable object.''</code> | |
− | + | == Cause == | |
− | + | Analytica won't let you assign a value to a [[slice]] ([[subscript]]ed element) of a global variable, even in an [[OnClick]] or [[OnChange]] attribute, or Function called from one of those, where you would normally be able to [[Assignment Operator :=|assign]] to a global variable. It will let you assign to a [[slice]] of a [[Local Variables|local variable]]. | |
− | <code> | + | Here the [[OnClick]] attribute of Button <code>Change_X</code>tries to assign to a slice of the global variable <code>X</code>, and so triggers this error message: |
− | Variable X := Table(I)( | + | <pre style="background:white; border:white; margin-left: 1em;"> |
+ | Index I := 1..2 | ||
+ | Variable X := Table(I)(10, 20) | ||
+ | Button <code>Change_X</code> | ||
+ | OnClick: X[I = 2] := 30 | ||
+ | </pre> | ||
− | + | == Remedies == | |
− | |||
− | + | Analytica ''does'' let you assign to a slice of a local variable (in any Definition), and it ''does'' let you assign to a global variable (not a slice) in an [[OnClick]] or [[OnChange]] attribute, or Function called from one of those attributes. So you can work around this problem. | |
+ | # Copy the global array, <code>X</code>, into a local variable, <code>local_x</code>, | ||
+ | # Assign a new value to a slice of <code>local_x</code>, | ||
+ | # Assign the value of <code>local_x</code> back to the global, <code>X</code>, | ||
− | + | For example: | |
+ | |||
+ | <pre style="background:white; border:white; margin-left: 1em;"> | ||
+ | Index I := 1..2 | ||
+ | Variable X := Table(I)(10, 20) | ||
+ | Button <code>Change_X</code> | ||
+ | OnClick: | ||
+ | VAR local_X := X; | ||
+ | local_X[I = 2] := 30; | ||
+ | X := local_X | ||
+ | </pre> | ||
− | + | This does what you need. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | ==See Also== | |
− | + | * [[User-Defined Function]] | |
− | + | * [[Local Variables]] | |
+ | * [[Assignment Operator :=]] | ||
+ | * [[Slice]] | ||
+ | * [[Subscript]] | ||
+ | * [[Script]] | ||
+ | * [[Button]] |
Latest revision as of 17:59, 8 July 2016
Error message examples
You cannot assign to a slice or subscript of a global variable object.
Cause
Analytica won't let you assign a value to a slice (subscripted element) of a global variable, even in an OnClick or OnChange attribute, or Function called from one of those, where you would normally be able to assign to a global variable. It will let you assign to a slice of a local variable.
Here the OnClick attribute of Button Change_X
tries to assign to a slice of the global variable X
, and so triggers this error message:
Index I := 1..2 Variable X := Table(I)(10, 20) Button <code>Change_X</code> OnClick: X[I = 2] := 30
Remedies
Analytica does let you assign to a slice of a local variable (in any Definition), and it does let you assign to a global variable (not a slice) in an OnClick or OnChange attribute, or Function called from one of those attributes. So you can work around this problem.
- Copy the global array,
X
, into a local variable,local_x
, - Assign a new value to a slice of
local_x
, - Assign the value of
local_x
back to the global,X
,
For example:
Index I := 1..2 Variable X := Table(I)(10, 20) Button <code>Change_X</code> OnClick: VAR local_X := X; local_X[I = 2] := 30; X := local_X
This does what you need.
See Also
Comments
Enable comment auto-refresher