WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Edit Eingabe Fehler prüfen

 

bastidost
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 19.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.11.2011, 18:56     Titel: Edit Eingabe Fehler prüfen
  Antworten mit Zitat      
Hallo an Alle,

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.

Vielen Dank.

Gruß
Sebastian
_________________

Matlab macht Spaß wenn man weiß wie es geht!
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.11.2011, 19:09     Titel:
  Antworten mit Zitat      
Hallo,

bitte Code posten.

Die Abfrage würde ich direkt im Callback des Textfeldes machen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
bastidost
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 19.03.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.11.2011, 19:19     Titel:
  Antworten mit Zitat      
Moin Harald,

vielen Dank für Deine Hilfe / Antwort.


Code:
function Entfernung_nach_HH_Callback(hObject, eventdata, handles)

global Entfernungvariabel

clear Zwischenspeicher;

Eingabe  =  get(handles.Entfernung_nach_HH,'String');                       % Einen String auslesen.

if isempty(Eingabe);
   set(handles.Ausgabe_Entfernung,'FontWeight','normal','ForegroundColor','red','string','0,00')
   
   elseif isnan(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')
         
          elseif length (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')

                        elseif length (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')

                                                            else set(handles.Ausgabe_Entfernung,'FontWeight','bold','ForegroundColor',[0,0.55,0],'string',sprintf('%4.2f',Zwischenspeicher));
                                                                 Entfernungvariabel = Zwischenspeicher;
                                    end;
end;

function Entfernung_nach_HH_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end



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!
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.