Do you need to set "Set Path" when creating a Standalone Desktop Application (GUI)?

7 vues (au cours des 30 derniers jours)
I know this is a vague question, so I'll clarify. I have a GUI that uses "uigetfile" to let the user select a data file to import. The GUI uses the data from the file to create a time table. It works perfectly, however I tried testing it out on my friends computer (just to see how it worked on a Windows laptop) and when I tried importing the file the GUI said it could not find it. This was because I had not set the path for the location of the data (which folder it was in) so MATLAB did not know where to look for the file. I shared the GUI directly to his computer, so I was able to pull up MATLAB command window and set the path which fixed the problem. BUT, in the future I would like to compile the App to create a "Standalone Desktop Application" so that someone without MATLAB could use my App. Which brings me back to my original question, if I were to create a "Standalone Desktop Application" how would the application know were to look for the data files? Would it do what it did on my friends computer and say it didn't exist OR does a desktop application have more versatility and not need a path to be set?? Any information would be great, thanks!!
  5 commentaires
Bruno Luong
Bruno Luong le 24 Juil 2020
Modifié(e) : Bruno Luong le 24 Juil 2020
You have to use both Path and Filename. The Path returned is not without purspose.
If you use only Filename MATLAB looks in the default path, and as you have already figure out the default path is not well defined in standalone app (it's somewhere where the encrypted source code is expanded, and usually not the place where the file browed is located).
[file, path] = uigetfile();
if ischar(file)
T = readtable([path, file]);
else
% thow an error
end
Forrest Ward
Forrest Ward le 24 Juil 2020
Oooooooh, that makes a lot of sense! Thank you!

Connectez-vous pour commenter.

Réponse acceptée

Walter Roberson
Walter Roberson le 23 Juil 2020
When you use uigetfile, you should use both return parameters:
[filename, filedir] = uigetfile('appropriate parameters here');
if isnumeric(filename)
return; %user canceled
end
fullname = fullfile(filedir, filename);
Now access the file according to fullname
  3 commentaires
Forrest Ward
Forrest Ward le 24 Juil 2020
Modifié(e) : Forrest Ward le 24 Juil 2020
Nevermind, I see where you're coming from! Gotta use both the path and filename when reading in files to tables and such
Walter Roberson
Walter Roberson le 24 Juil 2020
uigetfile can return:
  • numeric, if the user canceled
  • cell array of character vectors, if multiselect is on and the user selected multiple items
  • character vector, if multiselect is off or if it is on but the user only selected one item

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Dialog Boxes dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by