ich habe eine GUI erstellt die meherer Edit Felder hat. Der Nutzer kann also verschiedene Sachen eintippen. Es werden aber nur Zahlen akzeptiert.
Nun möchte ich, wenn der User eine falsche Eingabe macht, dass eine Fehlermeldung ausgeworfen wird und das die falsche Eingabe gelöscht ist und das Editfeld wieder leer.
Dies soll solange passieren, bis eine korrekte Eingabe gemacht wurde.
Nun ich habe direkt im Callback eine if-Abfrage drine, aber diese wirft mir nur einmal meine Fehlermeldung aus.
Die ganze GUI soll am Ende etwas errechen und dies erfolgt durch einen "Start-Button" . Muss ich dort die Abfrage der Fehler machen?
Ich hoffe nun das mir einer weiterhelfen kann. as wäre sehr freundlich.
elseifisnan(str2double(Eingabe)) ; % "isnan" prueft die Eingabe, ob es sich um eine Zahl handelt. Punkt und Komma werden dabei akzeptiert. Handelt es sich nicht um eine Zahl, dann ist das Ergebnis "1". Handelt es sich um eine Zahl, dann ist das Ergebnis "0".
helpdlg((sprintf('%s\n\n%s\n\n%s\n\n%s','Es werden keine Buchstaben oder Zeichen akzeptiert!','Es wird auch nur ein einzelner Punkt oder ein einzelnes Komma als Trennzeichen akzeptiert!','Bitte geben Sie eine Zahl ein!','Beispiel: 12,4 oder 12.4')), 'Falscher Eingabewert der Entfernung'); % Hier habe ich Platz zwischen den Saetzen gelassen, damit es im Hilfefenster besser aussieht. (Geordneter). set(handles.Ausgabe_Entfernung,'FontWeight','normal','ForegroundColor','red','string','0,00')
elseiflength(strfind(Eingabe, ',')) > 1; % "findstr" sucht nach einem Zeichen und gibt die Stelle wieder, an der das Zeichen jeweils steht. errordlg((sprintf('%s\n\n%s','Bitte ueberpruefen Sie Ihre Eingabe!',' Es darf nur ein Komma verwendet werden!')),'Falscher Eingabewert der Entfernung','on');
set(handles.Ausgabe_Entfernung,'FontWeight','normal','ForegroundColor','red','string','0,00')
elseif(length(strfind(Eingabe, ',')) + length(strfind(Eingabe, '.'))) >1;
errordlg((sprintf('%s\n\n%s','Bitte ueberpruefen Sie Ihre Eingabe!','Es darf nur ein Trennzeichen (Punkt oder Komma) verwendet werden.')),'Falscher Eingabewert der Entfernung','on');
set(handles.Ausgabe_Entfernung,'FontWeight','normal','ForegroundColor','red','string','0,00')
elseiflength(Eingabe) > 7;
errordlg((sprintf('%s\n\n%s','Bitte ueberpruefen Sie Ihre Eingabe!','Es werden max. 7 Stellen akzeptiert!')),'Falscher Eingabewert der Entfernung','on');
set(handles.Ausgabe_Entfernung,'FontWeight','normal','ForegroundColor','red','string','0,00')
else Eingabe = strrep(Eingabe,',','.');
Zwischenspeicher = str2double(Eingabe); % In die Variable "Zwischenspeicher" wird der mit "str2double" gewandelte Wert eingelesen.
if Zwischenspeicher < 0;
errordlg('Es werden nur Zahlen groesser Null akzeptiert!','Falscher Eingabewert der Entfernung','on');
set(handles.Ausgabe_Entfernung,'FontWeight','normal','ForegroundColor','red','string','0,00')
elseif Zwischenspeicher == 0,
errordlg('Die Entfernung nach Hamburg muss groesser Null sein !','Falscher Eingabewert der Entfernung','on');
set(handles.Ausgabe_Entfernung,'FontWeight','normal','ForegroundColor','red','string','0,00')
elseif Zwischenspeicher > 1200;
errordlg('Strecken groesser 1200 km werden nicht bedient!', 'Falscher Eingabewert der Entfernung','on');
set(handles.Ausgabe_Entfernung,'FontWeight','normal','ForegroundColor','red','string','0,00')
elseif Zwischenspeicher < 0.1;
errordlg('Strecken kleiner 100 m werden nicht bedient!', 'Falscher Eingabewert der Entfernung','on');
set(handles.Ausgabe_Entfernung,'FontWeight','normal','ForegroundColor','red','string','0,00')
Solange ein Fehler vorliegt soll "Entfernungvariabel" leer sein oder -1. Ist alles OK soll sie den Eingelesenen und umgewandelten String übernehmen.
Gruß
_________________
Matlab macht Spaß wenn man weiß wie es geht!
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.