uigetfile canceled returns 0, converting my string to a scalar

조회 수: 4 (최근 30일)
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

채택된 답변

Walter Roberson
Walter Roberson 2024년 7월 7일
if isnumeric(infile)
instead of testing == 0
  댓글 수: 3
Alessandro Livi
Alessandro Livi 2024년 7월 7일
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 2024년 7월 7일
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;

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Model, Block, and Port Callbacks에 대해 자세히 알아보기

제품


릴리스

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by