eval for string to variable
55 次查看(过去 30 天)
显示 更早的评论
I have a GUI with a string as variable and a returned value for it.
var="simulation type"
returned GUI value:
DataEdit.Value = 1x1 cell array {'RUN 1'}
eval([var '=' char(DataEdit.Value) ';']) gives Error using eval, Argument must be a text scalar.
Any suggestions?
2 个评论
Stephen23
2023-10-17
"Any suggestions?"
The fact that EVAL lets you obfuscate such buggy code should be a big hint that this should be avoided.
Walter Roberson
2023-10-17
And when the XML file has in it
app = ''
then should your code delete your GUI, writing over the app variable that is holding the framework of your entire GUI ?
采纳的回答
Voss
2023-10-17
Since var is a string (as opposed to character vector), when you concatenate it with character vectors, those character vectors are converted to strings as well, and the result is a string array:
var="simulation type";
DataEdit.Value = {'RUN 1'};
[var '=' char(DataEdit.Value) ';']
However, if you convert var into a character vector, then the concatenation works:
[char(var) '=' char(DataEdit.Value) ';']
You could also use the + operator for string concatenation, to concatenate everything as a string:
var + '=' + char(DataEdit.Value) + ';'
But in either case, you cannot eval the result because simulation type is not a valid variable name:
try
eval([char(var) '=' char(DataEdit.Value) ';'])
catch ME
disp(ME.message)
end
try
eval(var + '=' + char(DataEdit.Value) + ';')
catch ME
disp(ME.message)
end
So what is it you want to do with this?
4 个评论
Walter Roberson
2023-10-18
What XML writing routine are you using that cares about the name of the variable holding the data to be written??
Have you considered using dynamic field names of a struct, and using writestruct to write the output XML file ? Perhaps having used readstruct to read the original in?
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Structures 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!