uigetfile does not work in a loop
Mostra commenti meno recenti
I am running the code below to generate a list of files separated by spaces. If I put a break point in the while loop or step into the loop using a break point outside the loop, everything works correctly. If I run the code normally by calling the function it is in, it never opens the uigetfile window. I have put a disp('Hi') in the loop after the uigetfile command, at it does display the text in the command window so the loop is running. How can I get this to work without stepping through it?
RelatedFiles='N/A';
FileName=1;
while FileName
[FileName, PathName]=uigetfile('*.*','Select Related Test Files (Press Cancel when Finished)','MultiSelect','on');
if ischar(FileName)
FileName={FileName};
end
if iscell(FileName)
for I=1:length(FileName)
if strcmp(RelatedFiles,'N/A')
RelatedFiles=[PathName,FileName{I}];
else
RelatedFiles=[RelatedFiles,', ',PathName,FileName{I}];
end
end
FileName=1;
end
end
3 Commenti
Azzi Abdelmalek
il 8 Gen 2013
Your code is working
Alan Hoskins
il 8 Gen 2013
Modificato: Image Analyst
il 8 Gen 2013
Jan
il 9 Gen 2013
Are there any EVALs in your code, which redefine built-in functions? In debug mode, variables created by EVAL are handled differently than in non-debug mode.
Risposte (5)
Image Analyst
il 8 Gen 2013
Modificato: Image Analyst
il 8 Gen 2013
0 voti
It works as expected for me in R2012b. Put "echo on" at the start of your code, and take off the semicolons. Then examine the command window and see if it did every line. And if you have disp('hi') in the loop, does it just print that millions of times as it goes blasting through the loop not waiting for uigetdir()?
Alan Hoskins
il 8 Gen 2013
0 voti
3 Commenti
Sean de Wolski
il 8 Gen 2013
Hi Alan,
Please contact support when you figure out the reproduction steps. We'd like to hear about it.
Alan Hoskins
il 8 Gen 2013
Image Analyst
il 8 Gen 2013
Weird that echo on fixes it. Are you going to answer my question about "hi"?
Alan Hoskins
il 9 Gen 2013
0 voti
Daniel
il 5 Ago 2014
I ran into the same issue with uigetfile in R2012b. I fixed it by making a call to drawnow just before the call to uigetfile. ex:
drawnow;
[fn,pn] = uigetfile('*.mat','Find file');
Hope this helps!
Andrew Reibold
il 5 Ago 2014
Hi, I had this same issue before.
Sometimes matlab runs faster than figures can populate and it moves on to steps too quickly.
I can't remember if its before or after, but try putting like a 10ms pause before or after your uigetfile.
You won't notice the difference, and it will possibly solve your problem.
pause(.1)
Categorie
Scopri di più su App Building in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!