Effacer les filtres
Effacer les filtres

uigetfile canceled returns 0, converting my string to a scalar

21 vues (au cours des 30 derniers jours)
Alessandro Livi
Alessandro Livi le 7 Juil 2024 à 21:14
Commenté : Walter Roberson le 7 Juil 2024 à 22:10
when I call [infile, location] = uigetfile() and it's canceled, it returns 0s, converting my strings to a scalars
Next time I call it I get an error:
Filename must be a character vector or a string scalar.
How do I get my string back for infile to be properly used next time?
This shouldn't be that hard! I even tried converting the vars back to strings but it still fails after a cancel loop
function LoadfromTextFileButtonPushed(app, event)
% Open the file in the Load trials text
if isempty(app.loc)
[infile, app.loc] = uigetfile('*.txt','Select a Stimulus File',app.defLoc);
else
[infile, app.loc] = uigetfile('*.txt','Select a Stimulus File',app.loc);
end
if infile == 0 % user canceled
app.FileName.Text = 'Click Load From Text File or enter manually';
% give me back a string var for next time
infile = '';
app.loc = app.defLoc; % return to default string
return;
end
% Put full file name into the File field name and read it in
locfile = fullfile(app.loc,infile);
app.FileName.Text = locfile;
app.UITable2.Data = readtable(locfile);
end

Réponse acceptée

Walter Roberson
Walter Roberson le 7 Juil 2024 à 21:21
if isnumeric(infile)
instead of testing == 0
  3 commentaires
Alessandro Livi
Alessandro Livi le 7 Juil 2024 à 21:35
I've even tried this after the cancel:
% give me back a string var for next time
clear infile;
infile = '';
app.loc = app.defLoc; % return to default string
Command line shows infile = '' but still errors out
Walter Roberson
Walter Roberson le 7 Juil 2024 à 22:10
Don't assign to app.Loc until after you have verified infile
if isempty(app.loc)
[infile, apploc] = uigetfile('*.txt','Select a Stimulus File',app.defLoc);
else
[infile, apploc] = uigetfile('*.txt','Select a Stimulus File',app.loc);
end
if infile == 0 % user canceled
app.FileName.Text = 'Click Load From Text File or enter manually';
% give me back a string var for next time
app.loc = app.defLoc; % return to default string
return;
end
app.loc = apploc;

Connectez-vous pour commenter.

Plus de réponses (0)

Produits


Version

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by