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

Fragen zu allen anderen Programmiersprachen.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

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

Beitrag 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
Zuletzt geändert von AND51 am 07.02.2007 02:18, insgesamt 1-mal geändert.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag 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... :?
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
mika
Beiträge: 16
Registriert: 16.12.2005 01:26

Beitrag 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.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag 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.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag 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
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag 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
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Antworten