![]() |
Test ob gültige REAL
Wie kann man testen ob ein String eine Zahl darstellt, wenn jene Zahlen auch negativ (mit vorangestelltem Minus) sein können und vom Typ Integer oder Real sein können (also mit Kommastellen, wobei das Komma je nach Land durch ein Komma oder einen Punkt dargestellt sein kann)? Gleichzeitig will ich aber Strings wie die nachfolgenden "Un"-Zahlen ausschließen:
- "12-3" - "123-" - "123." - "1.2.3" - "1-2-3" - "-.-" Ich hatte bereits etwas gesucht, und das folgende Thema gefunden: ![]() Ist aber nicht genau das, was ich suche. Habe vorsichtshalber aber auch dort nochmal gefragt. Nicht sicher, welches das beste Unterforum dafür ist. :-) Bei meinem Problem kann ich mit Schleifen arbeiten. Nur der Algorithmus fällt mir nicht ein. |
AW: Test ob gültige REAL
Ein paar Überlegungen:
- das Vorzeichen darf nur einmal vorkommen und muss am Stringanfang stehen, gefolgt von mindestens einer Ziffer - der Dezimalseparator darf auch nur einmal vorkommen - ist der Tausenderseparator erlaubt, müssen ihm immer 3 Ziffern folgen - bei strenger Auslegung darf der Dezimalseparator nicht am Stringanfang oder Stringende stehen und der Tausenderseparator nicht am Stringanfang Das zu programmieren überlasse ich Dir ;) |
AW: Test ob gültige REAL
TryStrToFloat - oder habe ich was verpasst? :gruebel:
|
AW: Test ob gültige REAL
Zitat:
|
AW: Test ob gültige REAL
Zitat:
|
AW: Test ob gültige REAL
Zumindest steht es so im verlinkten Thread, in dem der T.E. auch zuerst gepostet hat. Vielleicht habe ich es aber auch selbst falsch verstanden (man ist ja nicht mehr der Jüngste :stupid:).
|
AW: Test ob gültige REAL
Gar nicht mal so schlecht, die Funktion TryStringToFloat war mir bis jetzt überhaupt nicht bekannt. Da sie ein Ergebnis vom Type Boolean liefert, könnte sie mir tatsächlich als vollständige Testfunktion dienen.
Jedoch gibt es bei mir ein Problem mit dem Benutzen der TryStringToFloat-Funktion:
Code:
var
MyMemory: String; MyReal: Real; MySuccess: Boolean; begin ... if(TryStrToFloat(MyMemory,MyReal)=True) then MySuccess:=True; ... end; Zitat:
UPDATE: Habe die REAL-Variable als EXTENDED deklariert, nun geht es wohl. |
AW: Test ob gültige REAL
Delphi-Quellcode:
var
MyMemory: String; MyReal: double; //oder extended oder single, aber nicht real MySuccess: Boolean; begin ... MySuccess := TryStrToFloat(MyMemory,MyReal); ... end; |
AW: Test ob gültige REAL
Jupp, hatte ich bereits getan! Vielen Dank trotzdem! Scheint, wir beide haben fast zur selben Zeit gepostet, ohne das Posting des jeweils anderen gesehen zu haben. :-)
|
AW: Test ob gültige REAL
Ich hoffe du meinst damit auch das Umstellen deiner Abfrage und nicht nur das ändern des Datentyps. Denn auf "= True" zu prüfen ist böse! :wink:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz