Problem in compiled app loading text, works in Matlab environment

1 view (last 30 days)
Not sure what I'm doing wrong. This works fine when running in Matlab, but my compiled application throws an error:
"Error using textscan
Invalid file identifier. Use fopen to generate a valid file identifier."
The offending line is the last line in the code below. Thanks for any suggestions!
% --- Executes on button press in pushbutton8.
function pushbutton8_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton8 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
myfile=uigetfile('*.txt', 'Pick a Text file');
fid = fopen(myfile,'r'); %# Open the file
data = textscan(fid,'%s %s %s','CollectOutput',true); %# Read the data as strings

Accepted Answer

Walter Roberson
Walter Roberson on 21 May 2018
[filename, filepath] = uigetfile('*.txt', 'Pick a Text file');
if ~ischar(filename); return; end %user cancel
myfile = fullfile(filepath, filename);
  4 Comments
Walter Roberson
Walter Roberson on 21 May 2018
uigetfile never returns the directory information into the first output.
Compiled applications have quite different ideas of what the default directory should be on startup. This is not for "security": it is simply because executables started through the window manager are independent processes that have no idea what the "current" directory is in any other graphics process.
Jeremy Hughes
Jeremy Hughes on 22 May 2018
I only mean that the parameter filename may work without the full path information in MATLAB because the file was in the pwd or it could have been in some other folder that was added to MATLAB's path. Even in the compiled application, the user could have selected a file which is on the deployed app's MATLAB Path, and the original code would have opened it as expected.
Your solution is more robust in any case. =)

Sign in to comment.

More Answers (0)

Categories

Find more on MATLAB Compiler in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!