2017-03-06 3 views
0

나는 MATLAB에서 사용자의 숫자 입력을 받아들이고 이에 따라 계산을하는 GUI를 만들고 있습니다. 나는 사용자가 숫자 대신 문자를 입력 할 때마다 오류 대화 상자를 만들 수 있기를 원합니다. 지금까지 오류 메시지가 표시 코드의이 비트를 가지고 :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

몇 가지 통찰력은 무엇입니까? 귀하의 질문은 무엇인가? – excaza

+0

@excaza, 사용자가 숫자가 아닌 입력을 받으면 오류 코드를 표시하려면 어떻게해야합니까? 지금 그대로 입력 된 내용에 관계없이 오류 메시지가 표시됩니다. 이 문제를 해결하기 위해 오류 메시지 코드를 프로그램에 통합하는 방법을 모르겠습니다. – Oreomega

+0

사용자 입력이 if 루프를 중첩 할 위치보다 많은지 확인하는 방법을 찾고있는 것처럼 보입니다. (실제로 코드가 있다면 if 문을 어디에 넣어야하는지 알 것입니다.). – BillBokeey

답변

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

사용 aSpace-Inf하지 복잡한 수 Inf를, NaN의, 하지 있는지 확인하기 위해 if 문을 다음

is_ok = isfinite(aSpace) && isreal(aSpace); 

if (~is_ok) 
    %Handle error... 
end