2017-03-06 3 views
0

Ich mache eine GUI in MATLAB, die numerische Eingaben vom Benutzer akzeptieren und Berechnungen mit ihnen entsprechend vornehmen wird. Ich möchte ein Fehlerdialogfeld erstellen können, wenn der Benutzer Buchstaben anstelle von Zahlen eingibt. Bisher habe ich dieses Stück Code, um die Fehlermeldung angezeigt werden:Matlab gui Fehlermeldung

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

Und das ist ein Teil des Haupt Code, Ich mag würde die Fehlermeldung integrieren in:

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

EDIT: Zusammenfassend muss ich herausfinden, wie ich meine Fehlermeldung Code in diesem Abschnitt des Codes integrieren kann, so dass es, wenn der Benutzer überprüft habe Zahlen eingegeben, sonst möchte ich eine Fehlermeldung anzeigen lassen. Im Moment zeigt der Code die Fehlermeldung an, unabhängig davon, was der Benutzer eingegeben hat.

+1

Ein Einblick in ... was? Was ist deine Frage? – excaza

+0

@excaza, wie bekomme ich diesen Code eine Fehlermeldung anzuzeigen, wenn eine nicht numerische Eingabe vom Benutzer gegeben wird? Wie es jetzt aussieht, wird die Fehlermeldung angezeigt, unabhängig davon, was eingegeben wird. Ich weiß nicht, wie man den Fehlermeldungscode in das Programm integriert, um dies zu erreichen. – Oreomega

+0

Scheint so, als ob Sie mehr darüber wachen, wie überprüft werden kann, ob eine Benutzereingabe eine Nummer ist als nach dem Verschachteln der if-Schleife. (Wenn es wirklich dein Code ist, bin ich mir sicher, dass du weißt, wo du die if-Anweisung ablegen kannst ...). – BillBokeey

Antwort

0

Sie können es wie folgt:

I aSpace = str2double(get(hObject,'String')); auf zwei Aussagen geteilt (nur weil es einfacher zu erklären):

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

Es gibt zwei Fehlerfälle ich denken kann:

  1. Die Eingabezeichenfolge ist nicht numerisch.
    Beispiel: str = 'abc'.
    aSpace = NaN
    Wert auch Inf oder -Inf sein könnte.
  2. Die Zeichenfolge ist eine komplexe Zahl. Beispiel: str = '2 + 3i'.
    aSpace = 2,0000 + 3.0000i

Verwenden Sie die folgende if Anweisung zu überprüfen, ob aSpace nicht NaN ist, Inf, -Inf und nicht Komplex Nummer:

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

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