Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Test ob gültige REAL (https://www.delphipraxis.net/158131-test-ob-gueltige-real.html)

SvenLittkowski 7. Feb 2011 07:36

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:
http://www.delphipraxis.net/104177-z...umwandeln.html
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.

DeddyH 7. Feb 2011 07:42

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 ;)

Deep-Sea 7. Feb 2011 08:36

AW: Test ob gültige REAL
 
TryStrToFloat - oder habe ich was verpasst? :gruebel:

DeddyH 7. Feb 2011 08:38

AW: Test ob gültige REAL
 
Zitat:

Zitat von Deep-Sea (Beitrag 1079993)
oder habe ich was verpasst? :gruebel:

Hast Du. Es soll keine Umwandlung verwendet werden. Der Sinn dahinter erschließt sich mir zwar nicht, aber was soll' s?

Deep-Sea 7. Feb 2011 08:40

AW: Test ob gültige REAL
 
Zitat:

Zitat von DeddyH (Beitrag 1079994)
Es soll keine Umwandlung verwendet werden.

Hab ich wohl überlesen ... *angestrengt such* ... öhm ... vlt. kauf ich mir 'ne Brille :?

DeddyH 7. Feb 2011 08:43

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:).

SvenLittkowski 7. Feb 2011 08:50

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:

Zitat von Mein Delphi 7
[Error] Box1.pas(808): There is no overloaded version of 'TryStrToFloat' that can be called with these arguments

Da doch diese Funktion ein True oder False liefert, sollte dieser Code doch funktionieren, dachte ich mir. Tut er aber nicht. Was mache ich noch falsch?

UPDATE:

Habe die REAL-Variable als EXTENDED deklariert, nun geht es wohl.

DeddyH 7. Feb 2011 08:58

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;

SvenLittkowski 7. Feb 2011 09:43

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. :-)

Deep-Sea 7. Feb 2011 09:45

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 03:35 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz