Replacing "dir" when deploying a GUI

When turning a GUI into a standalone application i found out that the function "dir" i was using to get the names of the files in a folder, is not working. Using MATLAB Compiler i could add these files to the executable but i don't know how to get their names now i can't use this function, is there a similar one that works in a deployed code?

3 commentaires

Adam
Adam le 26 Juil 2018
I'm fairly sure I've used dir in a compiled application. I always use it with an argument though rather than just relying on whatever the current folder happens to be. I don't see any restrictions in the Help that suggest it doesn't work in a deployed executable.
OCDER
OCDER le 26 Juil 2018
Can you show us an example code of how dir is used?
Edison
Edison le 26 Juil 2018
a=dir('*.xlsx'); b=extractfield(a,'name');
Indeed the function works, but it refers to the files in the executable folder, instead of that i need a function that refers to files in the ctffile

Connectez-vous pour commenter.

 Réponse acceptée

OCDER
OCDER le 26 Juil 2018
Try this:
if isdeployed
a = dir(fullfile(ctfroot, '**', '*.xlsx')); %remove '**' if you know a precise folder location.
assert(~isempty(a), 'ERROR: Could not find a file at "%s".', fullfile(ctfroot, '**', '*.xlsx'))
else
a = dir(fullfile(my_root, '**', '*.xlsx')); %my_root is some other "main" dir of your codes
assert(~isempty(a), 'ERROR: Could not find a file at "%s".', fullfile(my_root, '**', '*.xlsx'))
end

2 commentaires

Edison
Edison le 26 Juil 2018
Thanks. It now recognizes the files. How can i open one of them using "winopen". Do i have to use "ctfroot" again?
Since you already found the directory using dir, you could try this:
XlsFile = fullfile(a(1).folder, a(1).name)
winopen(XlsFile)
Or this could work if you know the exact excel file name because deployed applications has its own paths - so it should find the file for you.
winopen('XlsFileName.xlsx')

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur File Operations dans Centre d'aide et File Exchange

Question posée :

le 26 Juil 2018

Commenté :

le 26 Juil 2018

Community Treasure Hunt

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

Start Hunting!

Translated by