AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Test ob gültige REAL

Ein Thema von SvenLittkowski · begonnen am 7. Feb 2011 · letzter Beitrag vom 9. Feb 2011
Antwort Antwort
Seite 1 von 2  1 2      
SvenLittkowski

Registriert seit: 18. Dez 2004
98 Beiträge
 
#1

Test ob gültige REAL

  Alt 7. Feb 2011, 07:36
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.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Test ob gültige REAL

  Alt 7. Feb 2011, 07:42
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
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#3

AW: Test ob gültige REAL

  Alt 7. Feb 2011, 08:36
TryStrToFloat - oder habe ich was verpasst?
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Test ob gültige REAL

  Alt 7. Feb 2011, 08:38
oder habe ich was verpasst?
Hast Du. Es soll keine Umwandlung verwendet werden. Der Sinn dahinter erschließt sich mir zwar nicht, aber was soll' s?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#5

AW: Test ob gültige REAL

  Alt 7. Feb 2011, 08:40
Es soll keine Umwandlung verwendet werden.
Hab ich wohl überlesen ... *angestrengt such* ... öhm ... vlt. kauf ich mir 'ne Brille
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Test ob gültige REAL

  Alt 7. Feb 2011, 08:43
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 ).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
SvenLittkowski

Registriert seit: 18. Dez 2004
98 Beiträge
 
#7

AW: Test ob gültige REAL

  Alt 7. Feb 2011, 08:50
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 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.

Geändert von SvenLittkowski ( 7. Feb 2011 um 08:59 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Test ob gültige REAL

  Alt 7. Feb 2011, 08:58
Delphi-Quellcode:
var
 MyMemory: String;
 MyReal: double; //oder extended oder single, aber nicht real
 MySuccess: Boolean;
begin
  ...
  MySuccess := TryStrToFloat(MyMemory,MyReal);
  ...
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
SvenLittkowski

Registriert seit: 18. Dez 2004
98 Beiträge
 
#9

AW: Test ob gültige REAL

  Alt 7. Feb 2011, 09:43
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.
  Mit Zitat antworten Zitat
Benutzerbild von Deep-Sea
Deep-Sea

Registriert seit: 17. Jan 2007
907 Beiträge
 
Delphi XE2 Professional
 
#10

AW: Test ob gültige REAL

  Alt 7. Feb 2011, 09:45
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!
Chris
Die Erfahrung ist ein strenger Schulmeister: Sie prüft uns, bevor sie uns lehrt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:14 Uhr.
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