当使用两个按钮时评估uicontrol回调时发生错误

4视图(30天)
大家好,我有一个问题我的GUI。我的程序有两个按钮,我使用第一个按钮在子文件夹选择一个特定的文件。
函数pushbutton1_Callback (hObject eventdata处理)
% hObject句柄pushbutton1(见GCBO)
% eventdata保留——MATLAB的未来版本中定义
%处理结构处理和用户数据(见GUIDATA)
[文件名、路径名,filterindex] = uigetfile (
{‘* .mat‘,“mat文件(* .mat)”;
“* .slx; * . mdl”,”模型(*。基金,* . mdl)”;
‘* . txt”,“文本文件(* . txt)”;
“* *”。,所有文件(* . *)”},
“选择文件”,
“多选”,“上”,
“. . \ Schaltungen \”);
如果isequal(文件名,0)
disp (用户选择:取消的)
其他的
disp ([用户选择的fullfile(路径名,文件名)))
结束
全球帧;
assignin (“基地”,“帧”文件名);
% assignin(“基地”、“路径”,路径名);
%帧= strcat(路径名,文件名);
% assignin(“基地”、“帧”,帧);
%按钮1的回调
handles.fname= fname;
guidata (hObject,处理)
当我宣布与包含按钮2 m.file 的代码 m.file
(名称、N1、N2、长度)= textread(帧,“% s % s % s % s”);
流程变量 我有已经在按钮1。和回调函数的代码按钮2
函数pushbutton2_Callback (hObject eventdata处理)
% hObject句柄pushbutton2(见GCBO)
% eventdata保留——MATLAB的未来版本中定义
%处理结构处理和用户数据(见GUIDATA)
全球帧;
帧=“handles.fname”;
和我的程序有错误,
错误使用textread(第165行)
文件没有找到。
错误在骗局(13号线)
(名称、N1、N2、长度)= textread(帧,“% s % s % s % s”);
错误在demogui > pushbutton2_Callback(第112行)
骗局
错误在gui_mainfcn(第95行)
函数宏指令(变长度输入宗量{:});
错误在demogui(42)行
gui_mainfcn (gui_State变长度输入宗量{:});
错误@ (hObject eventdata) demogui (pushbutton2_Callback, hObject、eventdata guidata (hObject))
错误而评估uicontrol回调
我不知道什么发生在这个项目。希望得到你的支持。万博1manbetx

接受的答案

杰夫•海斯
杰夫•海斯 2015年12月17日
谭,我认为这个错误可能是源自第二个按钮回调你指定的地方
帧=“handles.fname”;
所以的文件 textread 将尝试读取字符串的处理。文件名”,而不是引用的文件名。包装在引用这个变量创建一个字符串的变量名。
你也不需要申报的东西 作为一个全球或分配到基本工作空间。喜欢你已经显示在第一个按钮回调,只是把它作为一个字段 处理 结构。回调可以简化为
函数pushbutton1_Callback (hObject eventdata处理)
[文件名、路径名,filterindex] = uigetfile (
{‘* .mat‘,“mat文件(* .mat)”;
“* .slx; * . mdl”,”模型(*。基金,* . mdl)”;
‘* . txt”,“文本文件(* . txt)”;
“* *”。,所有文件(* . *)”},
“选择文件”,
“多选”,“上”,
“. . \ Schaltungen \”);
如果isequal(文件名,0)
disp (用户选择:取消的)
handles.fname=;
其他的
帧= fullfile(路径名,文件名);
disp ([用户选择的、帧]);
handles.fname= fname;
结束
guidata (hObject,处理)
在上面,我们保存路径和文件名 handles.fname (如果不选择一个文件,那么这个字段设置为一个空字符串)。现在,在你的第二个回调可以访问这个文件
函数pushbutton2_Callback (hObject eventdata处理)
如果isfield(处理,“帧”)
如果~ isempty (handles.fname)
帧= handles.fname;
(名称、N1、N2、长度)= textread(帧,“% s % s % s % s”);
结束
结束
1评论
谭黄齐
谭黄齐 2015年12月18日
谢谢你的清楚explaning。它是非常有用的。这是好的工作。@ Geoff海耶斯

登录置评。

更多的答案(0)

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!