eval for string to variable
54 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Jonathon Cheah
am 17 Okt. 2023
Kommentiert: Walter Roberson
am 18 Okt. 2023
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 Kommentare
Stephen23
am 17 Okt. 2023
"Any suggestions?"
The fact that EVAL lets you obfuscate such buggy code should be a big hint that this should be avoided.
Walter Roberson
am 17 Okt. 2023
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 ?
Akzeptierte Antwort
Voss
am 17 Okt. 2023
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 Kommentare
Walter Roberson
am 18 Okt. 2023
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?
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Structures finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!