|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 04.10.2010, 15:15
Titel:
|
 |
Hallo
@ Jan
Mit SSCANF ist schwierig eine Eingabe auf Richtigkeit zu überprüfen.
z.B str='10g30' dein Algo würde das akzeptieren Number=1 sein, während man eigentlich 1030 eingeben wollte.
@ tuelee
so:
|
|
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 04.10.2010, 15:52
Titel:
|
 |
Hallo Denny!
Zitat: |
Mit SSCANF ist schwierig eine Eingabe auf Richtigkeit zu überprüfen.
z.B str='10g30' dein Algo würde das akzeptieren Number=1 sein, während man eigentlich 1030 eingeben wollte. |
Das stimmt natürlich. (Number=10 meintest Du wohl)
Deshalb mache ich auch das Update des Edit-Fensters. Der Check der Variablen wird als Callback des Edit-UICONTROLs ausgeführt. Bei der Einabe "10g30" wird also automatisch eine "10" daraus gemacht. Das könnte/sollte/müsste dem Nutzer eigentlich auffallen.
Es wäre auch möglich den 4. Output "NextIndex" von SSCANF zu benutzen, um zu prüfen, ob bis zum Ende des Strings gelesen wurde - dann kann STRTRIM helfen unnötige Leerzeichen am Ende einfach zu ignorieren.
Der Vorteil von SSCANF ist, dass der Test numerisch stattfinden kann, womit die meisten Matlab-Nutzer besser zurecht kommen dürften, als mit den Regular Expressions. Für sichere Web-Interfaces sind die Regular Expressions aber oft besser.
Gruß, Jan
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 04.10.2010, 16:26
Titel:
|
 |
Jan S hat Folgendes geschrieben: |
Hallo Denny!
Das stimmt natürlich. (Number=10 meintest Du wohl)
Deshalb mache ich auch das Update des Edit-Fensters. Der Check der Variablen wird als Callback des Edit-UICONTROLs ausgeführt. Bei der Einabe "10g30" wird also automatisch eine "10" daraus gemacht. Das könnte/sollte/müsste dem Nutzer eigentlich auffallen.
|
Ja Number =10 war gemeint. Auffallen? Na ja, man sollte doch immer von dummen Benutzer ausgehen, also dann wohl nicht.
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 07.10.2010, 00:50
Titel:
|
 |
Hallo Denny,
ja, ich gebe es zu. Ich lasse das UICONTROL nochmal kurz aufblinken (siehe UIFLASH in der FEX).
Ich brauche das z.B. in einer GUI, in der die Körpergröße in Zentimetern angegeben werden muss. Falls zahlen unter 3 eingegeben werden, oder etwas wie "180 cm", "1m80" etc, hilft der Test mit SSCANF und dem Aufblinken in meinem Fall.
Gruß, Jan
|
|
|
tuelee |

Forum-Anfänger
|
 |
Beiträge: 32
|
 |
|
 |
Anmeldedatum: 13.10.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.11.2010, 15:22
Titel:
|
 |
denny hat Folgendes geschrieben: |
Ach so, dann so
|
hallo denny,
ich bin am verzweifeln. nach mehreren versuchen gebe ich jetzt doch auf. ich versuche nun auch 2*10^2 zahlen darstellen zu lassen, aber beim bessten willen verstehe ich die syntaxfolge für regexp nicht. könntest du mir deine syntaxfolge erklären. danke.
|
|
|
Sco |

Forum-Meister
|
 |
Beiträge: 699
|
 |
|
 |
Anmeldedatum: 15.08.10
|
 |
|
 |
Wohnort: Dundee
|
 |
|
 |
Version: 2008a, 2010a
|
 |
|
|
 |
|
Verfasst am: 17.11.2010, 02:09
Titel:
|
 |
Hallo Danny,
...und vielleicht hättest du ja auch einen Link wo die Expressions verständlich erklärt werden. Mit meinen regexpi-Basiswissen kann ich z.B. die Zeile aus dem vorherigen Post irgendwie nicht nachvollziehen, würde es aber gerne .
Danke schön!
MFG
Sco
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 17.11.2010, 15:30
Titel:
|
 |
|
 |
|
Hallo ihr beiden,
In Matlab sind Reguläre Ausrücke noch nicht so mächtig, und deswegen sind nicht alle Konstrukte möglich. Also musst ihr Matlab-Doku stets mit Quellen abgleichen
Gute Quelle um zu lernen wäre z.B: http://www.regenechsen.de/phpwcms/index.php?regex
meine Ausdrücke teste ich hier:
http://gskinner.com/RegExr
@tuelee
ich möchte ungerne jetzt einzelne Operatoren erklären, schaut einfach hier:
http://www.regenechsen.de/phpwcms/index.php?regex_dt_elemente
Dieser Ausdruck besteht aus zwei Teilen: getrennt durch |
^[1-9][0-9]*(\.(\d)*)?([eE]([+-])?(\d)*)?$ --- für Zahlen von 1 bis N
^ --- Vergleich am Anfang des Strings
[1-9] --- Zahl beginnt mit Ziffern zw 1 und 9
[0-9]* --- kann aus weiteren Ziffern bestehen
(\.(\d)*)? --- Wenn es eine Fliesskommazahl, dann folgt es von einem Punkt und weiteren Ziffern
([eE]([+-])?(\d)*)? --- Exponent bestehend aus Buchstabe E, Zeichen + oder - und Ziffern (E+3)
$ --- Vergleich am Ende des Strings
^und$ zwingen REGEXP nur ab Anfang und/oder ab Ende zu vergleichen
^(0)?\.(\d)+([eE]([+-])?(\d)*)?$ -- für Zaheln zw. 0 und 1
Schritte Identisch wie Oben:
Im Prinzip musste man das nicht aufteilen und so in einem Schwung schreiben:
2*10^2 wurde folgender Ausdruck passen ^[0-9]\*10\^[0-9]$
zusammen konnte man das so lösen:
Zuletzt bearbeitet von denny am 17.12.2010, 10:26, insgesamt einmal bearbeitet
|
|
|
Sco |

Forum-Meister
|
 |
Beiträge: 699
|
 |
|
 |
Anmeldedatum: 15.08.10
|
 |
|
 |
Wohnort: Dundee
|
 |
|
 |
Version: 2008a, 2010a
|
 |
|
|
 |
|
Verfasst am: 17.11.2010, 15:57
Titel:
|
 |
Hallo danny,
vielen Dank, ich werd es mal durcharbeiten
MFG
Sco
|
|
|
tuelee |

Forum-Anfänger
|
 |
Beiträge: 32
|
 |
|
 |
Anmeldedatum: 13.10.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.11.2010, 11:53
Titel:
|
 |
hallo denny,
ebenfalls vielen dank für deine antwort.
gruß
|
|
|
stivi888 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.12.2012, 11:28
Titel: Ganze Zahl 1-12
|
 |
Ich bin gerade viel zu doof und probier schon die ganze Zeit rum aber es klappt nicht.
Wie kann ich denn die Zahlen als Eingabe in ein Edit Textfeld auf Ganze Zahlen zwischen 1-12 begrenzen???
Ich bin Matlab Anfänger, sorry für die dumme Frage aber ich komm einfach nicht weiter.
Vielen Dank schon mal
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 19.12.2012, 14:12
Titel:
|
 |
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 19.12.2012, 17:32
Titel: Re: Ganze Zahl 1-12
|
 |
Hallo stivi888,
Oder so:
Und dies gehört in den Callback des Edit-Feldes.
Gruß, Jan
|
|
|
|
Gehe zu Seite Zurück 1, 2
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| 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.
|
|