2013-08-15 3 views
2

Ниже представлено диалоговое окно ввода, которое я использую в программе. Кто-нибудь знает как «красиво» обрабатывать случай, когда пользовательский ввод не является числом? Кроме того, если номер находится за пределами диапазона minlev - maxlev, появляется сообщение об ошибке , но вы не можете нажать кнопку OK, потому что перед ним появляется диалоговое окно ввода . Кто-нибудь знает, как исправить это?Обработка ошибок с помощью inputdlg

RVP= 1; 


while (RVP) 

prompt = {'Enter the corridor width (1050-1400mm) :'}; 

dlg_title = 'Input'; 

num_lines=1; 

answer = inputdlg(prompt,dlg_title,num_lines); 

    if(str2num(answer{1})<1050 || (str2num(answer{1})>1400)) 
     errordlg('Number is out of range'); 

    else 
     w1 = (2*answer{1}-1050-1400)/(1400-1050) 


    end 
end 

ответ

1

isnumeric. Затем вы можете повторно вызвать inputdlg после диалога с ошибкой.

Чтобы защитить окно errordlg от прикрытия, используйте uiwait.

while (RVP) 
    prompt = {'Enter the corridor width (1050-1400mm) :'}; 
    dlg_title = 'Input'; 
    num_lines=1; 
    answer = inputdlg(prompt,dlg_title,num_lines); 
    if ~isnumeric(answer) || (str2num(answer{1})<1050 || (str2num(answer{1})>1400)) 
     uiwait(errordlg('Number is out of range')); 
     answer = inputdlg({'Please enter a valid input (1050-1400mm) :'},... 
          dlg_title,num_lines); 
    end 
     w1 = (2*answer{1}-1050-1400)/(1400-1050) 
end 
Смежные вопросы