MatlabGUI,如何告诉两个变量都存在于uicontrol中 函数按钮8_回调(hObject、eventdata、handles) EndDate=handles.EndDate StartDate=句柄。StartDate 如果存在('EndDate') 如果存在(“开始日期”) 如果(datenum(EndDate,'yyyy/mm/dd')
在执行MatlabGUI,如何告诉两个变量都存在于uicontrol中 函数按钮8_回调(hObject、eventdata、handles) EndDate=handles.EndDate StartDate=句柄。StartDate 如果存在('EndDate') 如果存在(“开始日期”) 如果(datenum(EndDate,'yyyy/mm/dd'),matlab,user-interface,exists,Matlab,User Interface,Exists,在执行EndDate=handles.EndDate之前,请尝试检查handles.EndDate是否存在,如果EndDate不存在,则该操作将失败。可能会出现以下情况: function pushbutton8_Callback(hObject, eventdata, handles) EndDate = handles.EndDate StartDate = handles.StartDate if exist('EndDate') if exist('StartDate')
EndDate=handles.EndDate
之前,请尝试检查handles.EndDate
是否存在,如果EndDate
不存在,则该操作将失败。可能会出现以下情况:
function pushbutton8_Callback(hObject, eventdata, handles)
EndDate = handles.EndDate
StartDate = handles.StartDate
if exist('EndDate')
if exist('StartDate')
if(datenum(EndDate,'yyyy/mm/dd')<datenum(StartDate,'yyyy/mm/dd'))
StartDateEarlierThanEndDate
else
Correct
end
else
makesureboth
end
end
函数按钮8_回调(hObject、eventdata、handles)
如果~isfield(句柄,'EndDate')| | ~isfield(句柄,'StartDate'))
%如果EndDate或StartDate都不存在,请调用makesureboth
确保两者
否则%两个变量都存在
如果(datenum(handles.EndDate,'yyyy/mm/dd')作为@David答案的替代,您还可以通过直接在用于输入StartDate和EndDate的uicontrol中进行检查来省去检查字段是否存在的麻烦(我猜这是一个编辑框?)
如果可能的话,您可以在按钮回调的开头添加一个验证步骤,检查输入的日期是否有效,如果有效,请继续。这可能会为您以后节省一些麻烦,因为您首先要确保用户输入正确的值。这并不能直接回答您的问题,但对于c来说太长了注意:)isfield
以及逻辑短路。我正要说…存在
可能不喜欢这样。;+1现在!直到看到你的评论,我才意识到exist
在struct上不起作用!不确定为什么不应该这样做?当您将某个内容传递给exist
时,它是一个字符串,这意味着它必须解析出“.”前面的结构名称,然后自己运行isfield
。他们可能没有实现这一点,因为当您开始考虑嵌套结构或非标量结构时,这将是一堆蠕虫。而且,传递整个过程可能会稍微有点错误:如果返回false,是否意味着结构不存在或字段不存在?您解决了我的问题,这是一个完美的答案!非常感谢!
function pushbutton8_Callback(hObject, eventdata, handles)
if ~isfield(handles,'EndDate') || ~isfield(handles,'StartDate')
% if either EndDate or StartDate do not exist, call makesureboth
makesureboth
else % both variables exist
if(datenum(handles.EndDate,'yyyy/mm/dd')<datenum(handles.StartDate,'yyyy/mm/dd'))
StartDateEarlierThanEndDate
else
Correct
end
end