Is it possible to recover a corrupted *.mlapp file?
25 views (last 30 days)
Matt Brown on 10 Aug 2022
I was working on an app and had just got the thing to work when the file became corrupted. When I tried to run the file (and now when I try to open it), I get an error dialog:
"Error loading 'PlotDigitizer.mlapp'.
And then this appears in the command window:
"Error using which
C:\Work\Matlab\Apps\Plot Digitizer\PlotDigitizer.mlapp: Can't open file.
Error in run (line 55)
pathscript = evalin('caller', strcat('which(''', script, ''')'));"
I tried to find a solution to this online and came up with reseting preferences... which didn't work.
This the second time this has occured, forcing me to loose several hours of work, and I am not even sure what I did to cause it, if anything. It seemingly worked one minute and then not the next.
Is App Designer that unstable? Is there a way to recover this or at least copy the text portion of the code?
Also, what options do I have for backup or autosave?
Robert Philbrick on 15 Aug 2022
Edited: Robert Philbrick on 15 Aug 2022
The app became corrupt due to an invalid character entered on line 413:
if(c == <escape character here>) % Exit when Esc key is pressed
The "escape" character that you used is not supported in the MLAPP code file. This is a bug and I have reported it to the App Designer team.
I fixed the app (attached) so that it will now load by removing the escape character and replacing it with 'escape'. A better way to detect if the user has pressed the escape key is to add a KeyPressFcn to your app's UIFigure and use the event.Key in the callback to determine if escape was pressed:
function UIFigureKeyPress(app, event)
key = event.Key;
% Check if key == 'escape'