Seite 1 von 2

Delphi6.0: Brauche eine Art "isNum()" oder "i

Verfasst: 07.02.2007 01:01
von AND51
Hallo!

Bräuchte für die Schule für Delphi die Möglichkeit, zu prüfen, ob in Edit1.Text eine zahl steht, oder nicht.
"Natürliche zahlen" würden reichen, die "ganzen Zahlen" (also auch Minuszahlen) wären gut, aber wenn sogar noch REAL/Float Zahlen unterstützt würden, wär das RIESIG!

Hat wer ein einfaches Beispiel für mich? Habe in der Schule mal kurz gesucht, und bin über Val() gestolpert, weiß aber nicht, wie ich das benutze.

Bitte nennt mir einach nur irgendeine Lösung, aber keine selbstgebastelten Funktionen/Proceduren oder DLLs oder so; es muss eine Delphi-Interne Funktion sein, damit ich meine Mitschüler und den Lehrer beim Vorstellen meiner Progrämmchen nicht überfordere.

Vielen Dank schon im Vorraus.

Titel angepasst - Kaeru fecit

Verfasst: 07.02.2007 01:18
von ts-soft
Val gibt den Wert zurück, bis es auf etwas ungültiges trifft, gültig sind 0-9,
sowie der Punkt. Also sind Realzahlen auch möglich.

Verfasst: 07.02.2007 02:17
von AND51
Und wenn in dem Feld nichtS drinSteht?
Was PasSiert dahn?

[Dieser Text wurde per Handschrifterkennung geschrieben, wegen der Fehler...]

// Edit: Habe ich im Übrigen erwähnt, dass ich das für Delphi 6.0 brauche? Wieso steht das nicht mit in der Überschrift... Ich könnte schwören, es stand dort drin, es steht ja auch noch in meinem AutoVervollständigen drin... :?

Verfasst: 07.02.2007 03:13
von Kaeru Gaman
war es zu lang? die überschrift hat ne maximallänge.... /:->

im allgemeinen (sollte in Delphi nich anders sein) gibt Val() die zahl zurück die es findet.
also, wenn keine zahl drin ist oder nur nuller gibt es null zurück.

wenn du das zusätzlich noch unterscheiden willst, kannst du überprüfen,
ob das erste zeichen eine null ist, oder ob der string leer ist.

aber:
Val() gibt den wert bis zum ersten nicht-numerischen zeichen zurück.
also der string "372 Kamele" ergibt den Value 372.

Verfasst: 07.02.2007 07:29
von mika
Wie wäre es wenn du den Text auf die Länge prüfst, dann eine Variable mit dem Val-Wert belegts und dann prüfst ob sie die gleiche Länge haben?

Ist nur so eine Idee.

Verfasst: 07.02.2007 09:26
von AND51
Vielen Dank, das mit Val() hat mir geholfen.
Nur eine Frage: Als Komma scheint er nur Punkt zu akzeptieren. Gibt's das auch irgendwie mit Komma? StrToFloatF() beispielsweise schaut ja in den Systemeinstellungen nach, was der User als Dezimalzeichen eingestellt hat. Da würde ich ganz gern haben, dass Val() sich auch danach richtet, muss aber nicht sein, wenns doch nicht geht.

> war es zu lang? die überschrift hat ne maximallänge....
Nein, es war nicht zu lang, sonst wäre es auch nicht in meinem AutoVervollständigen in ganzer Länge drin gewesen.

> Wie wäre es wenn du den Text auf die Länge prüfst, dann eine Variable mit dem Val-Wert belegts und dann prüfst ob sie die gleiche Länge haben?
Nett gemeint, aber unbrauchbar. Wir arbeiten in der Schule mit Delphi auf niedrigem Niveau und sollten nach Möglichkeit nur Befehle und Methodenbenutzen, die uns beigebracht wurden. Es reicht schon, wenn ich den neuenBefehl Var() benutze. Außerdem weiß ich die eingegebene Zahl vorher gar nicht, sodass ich deren Länge vergleichen könnte.

Verfasst: 07.02.2007 10:02
von Tafkadasom2k5
Gibt es nicht sowas wie REPLACE$(OldString,".",",") ?
Das wäre doch ne Idee:
Textfeld auslesen, Ersetzen von Kommata mit Punkten (oder umgekehrt), testen ob die Zahl eine Zahl ist (mit VAL) und dann weiterverarbeiten.

Gr33tz
Tafkadasom2k5

Verfasst: 07.02.2007 11:55
von Kaeru Gaman
AND51 hat geschrieben:> war es zu lang? die überschrift hat ne maximallänge....
Nein, es war nicht zu lang, sonst wäre es auch nicht in meinem AutoVervollständigen in ganzer Länge drin gewesen.
quatsch, das eine hat doch mit dem anderen nix zu tun.
was dein browser in der auto-vervollständigen liste mitführt, ist völlig unerheblich.
das forum selbst besitzt eine funktion, die das feld nach der eingabe beschneidet.

Verfasst: 07.02.2007 13:14
von ts-soft
Der Dezimaltrenner ist immer der Punkt, unabhängig von Systemeinstellungen.
Es wird hier nach wirklichen Realzahlen gesucht, nicht nach formatierten
Zahlenstrings :mrgreen: Ich glaub Hexzahlen erkennt er auch wenn ein $ voran steht.

Verfasst: 07.02.2007 15:56
von AND51
@ TS-Soft: Aha, danke füe die infos.

@ Tafkadasom2k5: ich dachte auch schon an so etwas wie Replace, aber wie gesagt, ich will (und soll) möglichst nur das benutzen, was wir alle schon kennen. Du kannst keinen Informatikkurs mit neuen Befehlen totschmeißen, wenn die meisten Probleme mit globalen Variablen und der Syntax haben...

@ Kaeru Gaman: Das weiß ich auch, nur komisch, dass er EXAKT die letzten beiden Wörter abtrennt. Außerdem: Ich habe mein Thread nachträglich umbenannt in uche eine Art "isNum()" oder "isNaN()" DELPHI 6.0. So steht es auch in meinem AutoverVollständigen.
Deine FUnktion hin oder her, das Eingabefeld ist von vornherein auf X Zeichen beschränkt (<input type=text maxlength=30>).



Das mit Val() in Delphi hat übrigens geklappt. Ich danke euch für eure Hilfe! :D