Matlab gui错误信息

时间:2017-03-06 15:26:44

标签: matlab loops user-interface if-statement editbox

我在MATLAB中创建一个GUI,它将接受来自用户的数字输入,并相应地对它们进行计算。我想能够在用户输入字母而不是数字时创建错误对话框。到目前为止,我有一些代码来显示错误消息:

ed = errordlg('Please enter numbers only','Error'); set(ed, 'WindowStyle', 'modal');uiwait(ed);

这是主要代码的一部分,我想将错误消息集成到:



function roofspace_Callback(hObject, eventdata, handles)
aSpace = str2double(get(hObject,'String')); %This is the user entered value for the roofspace.
set(hObject,'UserData',aSpace);

if aSpace==0 %If aSpace does not have anything then nothing is enabled.
   set(findall(handles.uipanelFunds, '-property', 'enable'), 'enable', 'off');
   set(findall(handles.uipanelPanels, '-property', 'enable'), 'enable', 'off');
   set(findall(handles.uipanelUsage, '-property', 'enable'), 'enable', 'off');
   set(handles.calculate,'enable','off');
   set(hObject,'String','');
else %If aSpace hs a value then this enables the rest of the inputs.
   set(findall(handles.uipanelFunds, '-property', 'enable'), 'enable', 'on');
   set(findall(handles.uipanelPanels, '-property', 'enable'), 'enable', 'on');
   set(findall(handles.uipanelUsage, '-property', 'enable'), 'enable', 'on');
   set(handles.calculate,'enable','on');
      
end




修改 总之,我需要弄清楚如何将我的错误消息代码集成到这段代码中,以便检查用户是否输入了数字,否则我想要显示一条错误消息。此时,无论用户输入了什么,代码都会显示错误消息。

1 个答案:

答案 0 :(得分:0)

您可以按如下方式查看:

我将aSpace = str2double(get(hObject,'String'));分成两个语句(只是因为它更容易解释):

str = get(hObject,'String');
aSpace = str2double(str);

我可以想到两个错误案例:

  1. 输入字符串不是数字 示例:str = 'abc'
    aSpace = NaN
    值也可能是 Inf -Inf
  2. 字符串是一个复数 示例:str = '2 + 3i'
    aSpace = 2.0000 + 3.0000i
  3. 使用下面的if语句,以检查是否aSpace不是的的NaN ,<强> Inf文件下,的 -Inf 并不是复杂号码:

    is_ok = isfinite(aSpace) && isreal(aSpace);
    
    if (~is_ok)
        %Handle error...
    end