Is it possible to recover a corrupted *.mlapp file?

8 visualizaciones (últimos 30 días)
Matt Brown
Matt Brown el 10 de Ag. de 2022
Comentada: Robert Philbrick el 7 de Mayo de 2024
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?
  2 comentarios
Matt J
Matt J el 10 de Ag. de 2022
If you restart Matlab, is the result any different?
Matt Brown
Matt Brown el 11 de Ag. de 2022
Negative. Reseting the preferences required a restart of Matlab.
I attached the *.mlapp file to the original post if you want to give it a shot.

Iniciar sesión para comentar.

Respuesta aceptada

Robert Philbrick
Robert Philbrick el 15 de Ag. de 2022
Editada: Robert Philbrick el 15 de Ag. de 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'
end
  8 comentarios
Robert Philbrick
Robert Philbrick el 7 de Mayo de 2024
@Sai Sandeep Chigurupati that zip file seems invalid as well and not recongized as a zip file. I would recommend that you contact customer support (https://www.mathworks.com/support/contact_us.html).

Iniciar sesión para comentar.

Más respuestas (1)

Max Scharrenbroich
Max Scharrenbroich el 4 de Abr. de 2024
If the .mlapp is corrupted you can still recover user-defined code and other things by opening the .mlapp as an archive using 7-zip.

Categorías

Más información sobre Environment and Settings en Help Center y File Exchange.

Productos


Versión

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by