I created a GUI using GUIDE. I would like to allow the user to input MATLAB script in an Edit box. Then I execute the string inside the Edit box as a MATLAB script. Is this possible? Thanks in advance.
One cannot use thatsecurely. And using it to make changes in the state of your program is really fragile. "poofing" variables into existence inevitably ends badly.
And are you at least using try/catch around the eval() to account for the pretty much 100% probability that someone will make a typing mistake and enter text that is not a valid command?
If you can limit the execution to a subset of commands, then you can parse the command line to extract parameters that you pass to your own routines instead of asking MATLAB to execute the code.
"Scrubbing" input before executing it is a persistent security problem. For example a bunch of web sites that thought they were securing strings just fine turned out to fail badly when UTF-8 encoding created new ways of inputting close-quotes and so allowed people to inject arbitrary commands onto sites. See also the history of "SQL Injection" hacks.
The Value property from a text area does not have any \n characters. No matter how you initialize it, what is returned when you retrieve the Value is a cell array of character vectors.
and it gives me this below output in table : I don't want that the words splitted into cells where each letter in one cell. I want that whole word be in one cell !
If you look the ans is splitted into a n s in different columns !
evalc() captures as text, not as number. There is no guarantee that the string evaluated only outputs numbers. Indeed, since it does not have terminating semicolon, it outputs
x =
2
y =
3
ans =
2.23606797749979
and it is not clear what exactly you would want your Data to be set to in that case.
If you put in the terminating semi-colons on every line, and if you can be sure that they did not use an assignment statement for the last expression, such as if you ask to execute 'x=2; y=3; sqrt(x+y);' then you can eval() the string and use ans . But can you be sure that the user will not ask for
changes ans to z = 2.23607(newline) and it is not clear you would want that as your Data property.
When you permit the user to input the commands and you execute them with evalc(), the only output you can expect is a character vector. You can split the character vector by lines, such as
Impossible de terminer l’action en raison de modifications de la page. Rechargez la page pour voir sa mise à jour.
Translated by
Sélectionner un site web
Choisissez un site web pour accéder au contenu traduit dans votre langue (lorsqu'il est disponible) et voir les événements et les offres locales. D’après votre position, nous vous recommandons de sélectionner la région suivante : .
Vous pouvez également sélectionner un site web dans la liste suivante :
Comment optimiser les performances du site
Pour optimiser les performances du site, sélectionnez la région Chine (en chinois ou en anglais). Les sites de MathWorks pour les autres pays ne sont pas optimisés pour les visites provenant de votre région.