MATLAB: Carrying over variables in app-designer

app designerMATLABundefined error

I have a script which searches for strings in files located in a folder.
I have a GUI made from appdesigner which has a button for where to pick your folder as well as where to pick your output file (to dump the gathered data to)
However, it is not letting me carry over variables from one function to another in the app designer's code view.
I have three buttons:
First one to open the folder you want to search in
% Button pushed function: FoldertoSearchButton
function FoldertoSearchButtonPushed(app, event)
fileLoc = uigetdir;
end
Second to choose the output file
% Button pushed function: FileButton
function FileButtonPushed(app, event)
outputFile = uigetfile('*.xls*');
end
and third to output the rejected file (ones which failed to have the given user-defined string in them):\
% Button pushed function: FileButton_2
function FileButton_2Pushed(app, event)
rejectFile = uigetfile('*.xls*');
end
end
I then have function located on the Start button callback which initializes the script.
% Button pushed function: StartButton
function StartButtonPushed(app, event)
stmFileSearch(app,fileLoc,outputFile,rejectFile)
end
The problem I'm having is it's giving me errors such as fileLoc is not defined, even when I have in the first button.

Best Answer

Avoid using global variables.
Instead, you can define a new property of your app that stores the fileLoc data. The process is explained here but I'll summarize what you need to do below.
  1. From the editor tab in App Designer, select the red "Property" dropdown button at the top and select "Private Property". This will add a property definition to a properties block.
  2. Within that newly added section, you can define any variable name that will store your fileLoc data (see section 1 below).
  3. In your FoldertoSearchButtonPushed() function, save the fileLoc to the app (see section 2 below).
  4. Now you can access the fileLoc property anywhere within your gui (see section 3 below).
% Section 1
properties (Access = private)
fileLoc = ''; % Directory chosen by user in FoldertoSearchButtonPushed()
end
% Section 2
function FoldertoSearchButtonPushed(app, event)
fileLoc = uigetdir;
app.fileLoc = fileLoc;
end
% Section 3
function StartButtonPushed(app, event)
stmFileSearch(app,app.fileLoc,outputFile,rejectFile)
% ^^^^^^^^^^^
end