BOOL SetVariable( CStr &varName, CValue value ) { VarError.Empty(); int pos; CValue *val; if ( varName.GetLength() > 0 && varName.GetAt(0) == L'[' ) { CStr expression = varName.Mid( 1 ); CInterpreter parser; CValue result = parser.EvaluateExpression( expression, FALSE ); int subPos = parser.GetErrorPosition(); if ( parser.GetError() != 0 ) { VarError = CStr( L"Error in variable reference: " ) + parser.GetErrorMessage(); return FALSE; } if ( expression[subPos] != L']' ) { VarError = L"Variable reference not closed (missing ']')"; return FALSE; } val = GetVariable( (CStr)result, TRUE, &pos ); } else{ val = GetVariable( varName, TRUE, &pos ); } val->CopyFrom( value ); return (pos != -1); }
BOOL ClearVariable( CStr &varName ) { VarError.Empty(); int pos; CValue *val = GetVariable( varName, TRUE, &pos ); if ( val != NULL ) val->Clear(); return (pos != -1); }