How to make an app that does not loose data when it's closed?
3 views (last 30 days)
Show older comments
I have an app kind of a calculator. It stores data in a UITable with a special property that increases with each pressing on the button to store the data in the app. UITable and its variable are reset when the app restarted. Is there a way to prevent the them to get reset and continue from the previous work?
0 Comments
Accepted Answer
dpb
on 24 Nov 2023
Edited: dpb
on 24 Nov 2023
Do you want/need the UITable to contain the previous data, too? Or just add onto the saved data what is new in the user table each time?
Since you're using a table component anyway, it would be simplest to use writetable and its companion; there's a named parameter-value pair 'WriteMode' with the value 'Append' for precisely the purpose of adding to the existing data.
If you want the table repopulated first, then read the file and put into the table; you'll then need to keep a pointer to how much was already there (or, if the user can change something before, then just rewrite the whole file). If not, but starting with a new, clean user interface, you're essentially done.
3 Comments
dpb
on 30 Nov 2023
Need more complete description of the problem; if the table is user-editable and the user changes an existing line, it will be rewritten as changed. If you are continuing to populate the table with the complete content as you first described, then simply read/writing the whole table every time is by far the simplest expedient.
If you're not repopulating the user table, but adding new content and appending, then it would take background work to read the file portion and compare to the new data to find any duplicate entries.
We simply don't have a sufficient description of how your app works to be able to know what it is you're trying to do...
More Answers (1)
Angelo Yeo
on 24 Nov 2023
I understand you do not want to overwrite previous files and want to make new name everytime. I suggest you save data with time marker of present time. For example,
filename = "myfile_"+string(datetime('now', 'format', 'yyyyMMddHHmmss'))+".mat";
save(filename, 'mydata')
When you come back, you can use the latest data among the "mat" based on the filenames.
3 Comments
Angelo Yeo
on 24 Nov 2023
If you only specify the filename, all variables in base workspace will be saved as "mat".
See Also
Categories
Find more on Develop Apps Using App Designer in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!