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 begrenzen

 

PraxiSGast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.02.2010, 13:20     Titel: edit eingabe begrenzen
  Antworten mit Zitat      
Hallo leute.
ich habe ein problem. und zwar möchte ich in ein edit text feld nur kommazahlen oder int zahlen eingeben lassen. ist das so einfach wie in c# möglich. hab nur ein beispiel für int zahlen gefunden. kann ich das irgendwie abwandlen:
Code:

wert = get(handles.A1_ed, 'String');

if all(isstrprop(wert,'digit'))
  wert=sscanf(wert, '%d');
  if wert <10000 || wert > 100000
    set(handles.A1_ed,'String', handles.data(9));  
    % fprintf('Zahl liegt außerhalb der Grenzen \n')
    return
  else
      handles.data(9)=wert;
      guidata(hObject, handles);
     
  end
else
  set(handles.A1_ed,'String',handles.data(9));  
  % fprintf('Keine Ganze Zahl\n')
  return;
end


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 09.02.2010, 14:05     Titel:
  Antworten mit Zitat      
Hallo,

das habe ich wohl damals geschrieben,
so wuerde ich dein Problem heute lösen:
Code:

wert = get(handles.A1_ed, 'String');

% über Regulären Ausdruck abfragen, ob es Zahl ist
ist_zahl = regexp(wert ,'^(\d)+(\.(\d)*)?$')

if ~isempty(ist_zahl)
  fprintf('Eine zulässige Zahl\n')
  wert=sscanf(wert, '%f');  
else
  fprintf('Keine zulässige Zahl\n')
  return;
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 09.02.2010, 16:08     Titel:
  Antworten mit Zitat      
Hallo,

damit auch .7 zahlen akzeptiert werden können

Code:

ist_zahl = regexp(wert ,'^(\d)+(\.(\d)*)?$|^\.(\d)+$')
 
Private Nachricht senden Benutzer-Profile anzeigen
 
PraxiSGast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.02.2010, 16:15     Titel: problem bei 1e10
  Antworten mit Zitat      
vielen dank. das würde nun funktionieren.
doch leider würd ich z.b. auch gern 1e10 eingeben.
das erkennt er aber nicht als zahl...
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 09.02.2010, 16:27     Titel:
  Antworten mit Zitat      
Hallo mal wieder

dann so:
Code:

ist_zahl = regexp(wert ,'^(\d)+(\.(\d)*)?([eE]([+-])?(\d)*)?$|^\.(\d)+([eE]([+-])?(\d)*)?$');
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.05.2010, 12:28     Titel:
  Antworten mit Zitat      
Hallo,

ich stehe vor einem ähnlichen Problem:
Wie muss die Zeile mit regexp abgeändert werden, damit auch negative Zahlen bei der Eingabe zugelassen werden?

Danke
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 31.05.2010, 10:57     Titel:
  Antworten mit Zitat      
Hallo
so:
Code:

ist_zahl = regexp(wert ,'^(-)?(\d)+(\.(\d)*)?([eE]([+-])?(\d)*)?$|^\.(\d)+([eE]([+-])?(\d)*)?$')

 
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.05.2010, 14:17     Titel:
  Antworten mit Zitat      
Hi denny

danke für deine Antwort. Mein Problem hat sich seit gestern etwas gewandelt. Ich hoffe, du kannst mir noch mal helfen. Und zwar habe ich Eingaben, deren Variablen nur positive reelle Zahlen annehmen dürfen, ohne die 0.
Erlaubt sind z.B.: 4, 3.5, 0.4, 23.454, 0.034 etc.

Ich kriegs einfach nicht gebacken, die Null auszuschließen. Auf die Möglichkeit Potenzen über e bzw. E einzugeben, könnte ich dabei auch verzichten. Für Eingaben, deren Variablen sowohl positive als auch negative reelle Zahlen annehmen dürfen, einschließlich der Null, hab' ich es einfach mit dem Meta-Char "/d" gemacht; was auch funktioniert hat.

Danke.

Gruß
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 31.05.2010, 15:07     Titel:
  Antworten mit Zitat      
Hallo

du meinst so:

Code:

ist_zahl = regexp(wert ,'^[1-9]+(\.(\d)*)?([eE]([+-])?(\d)*)?$|^(0)?\.(\d)+([eE]([+-])?(\d)*)?$')
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.05.2010, 15:23     Titel:
  Antworten mit Zitat      
Hi denny,

klasse. Hab' vielen Dank.

Gruß
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.05.2010, 16:26     Titel:
  Antworten mit Zitat      
Hi denny,

nochmals ich. Ein kleines Problem hat die regexp - Zeile noch:
Ziffernkombinationen wie 10, 20, 30.4 oder 40.06 werden nicht zugelassen. Sad
Also wenn nach einer "Nicht-Null-Ziffer" direkt eine Null steht ( ohne Dezimaltrennzeichen). So gehen beispielsweise 0.007 oder 0.05 schon.

Danke.

Gruß
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 31.05.2010, 16:44     Titel:
  Antworten mit Zitat      
Ach so, dann so
Code:

ist_zahl = regexp(wert,'^[1-9][0-9]*(\.(\d)*)?([eE]([+-])?(\d)*)?$|^(0)?\.(\d)+([eE]([+-])?(\d)*)?$')
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.05.2010, 17:33     Titel:
  Antworten mit Zitat      
Hallo,

super. Nochmals danke.

Gruß
 
tuelee

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.10.2010, 12:00     Titel:
  Antworten mit Zitat      
hallo,

wie müsste ich den ausdruck "regexp" schreiben, wenn ich nur ganze zahlen von 1 beginnent zulassen möchte?

denke
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 04.10.2010, 13:27     Titel:
  Antworten mit Zitat      
Liebe Leser,

man könnte natürlich auch SSCANF die Arbeit erledigen lassen:
Code:

str = strtrim(str);
Number = sscanf(str, '%g', 1);
if length(Number) ~= 1
   % Process error here
elseif Number ~= round(Number) || Number <= 0
   % Process: input is not positive integer
end
 

Ich lasse zudem mein Edit-UICONTROL oft noch updaten, wenn die Anzahl der Stellen sowieso begrenzt wird.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.