在這個範例中,我們將改進前一個範例,要加入一新功能,也就是在使用者輸入不合法的數值時(太大、太小、非數值、非純量)時,應用程式能夠回應錯誤訊息,並記錄錯誤的次數。欲達到此目標,我們必須在應用程式啟動時,就要設定錯誤的次數為零,而當每次發現錯誤時,不但要顯示錯誤訊息,而且要將錯誤次數加一。
根據前面的方式,我們可以經由 GUIDE 面版開啟 myGui01,然後點選下拉式選單「File/Save As…」將之儲存到 myGgui02。此時 GUIDE 會開啟 myGui02.m,你必須在 myGui02_OpeningFcn() 函式加入下列敘述:
handles.errorCount = 0; 此敘述必須加在 「guidata(hObject, handles);」之前,以保證新的 handles 會被保留。 接著,我們必須修改文字欄位的反應命令,亦即將 myText_Callback() 函數的內容修改如:
value = str2double(get(handles.myText, 'String')); % 判斷是否為介於 0 和 1 之間的純量數值 if isnumeric(value) & length(value)==1 & ... value >= get(handles.mySlider, 'Min') & ... value <= get(handles.mySlider, 'Max') set(handles.mySlider, 'Value', value); else % 若不合法,錯誤次數加一,並顯示相關訊息 handles.errorCount = handles.errorCount + 1; guidata(hObject, handles); % 儲存新的 handles errMsg=['數值不合法:第 ', num2str(handles.errorCount), ' 次錯誤']; set(handles.myText, 'String', errMsg); end 執行此應用程式,在第五次輸入不合法的數值後,畫面如下:
上述範例收錄在本書範例目錄中的 gui02.m 和 gui02.fig。
MATLAB程式設計:入門篇