Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Überprüfen, ob Variable einem gewissen Typ entspricht (https://www.delphipraxis.net/92520-ueberpruefen-ob-variable-einem-gewissen-typ-entspricht.html)

MarquiseDeSade 21. Mai 2007 17:00


Überprüfen, ob Variable einem gewissen Typ entspricht
 
:-D Hallo

Ich habe folgendes Problem:

Ich programmiere einen Taschenrechner. Wie kann ich es unterbinden, dass der Benutzer mehrmals die Kommataste drücken darf. Ich dachte da an eine Art überprüfung:

Delphi-Quellcode:
If edit1.text = real then....
Aber wahrscheinlich geht das so nicht. Auf den Punkt gebracht, möchte ich die Eingabe in Edit1 auf ein Komma überprüfen, und nur wenn keines vorhanden ist, darf der User die Kommataste drücken.

Hat jemand einen Denkanstoß ?

Danke :stupid:

Apollonius 21. Mai 2007 17:03

Re: Überprüfen, ob Variable einem gewissen Typ entspricht
 
Es gibt mehrere Möglichkeiten: Ich denke da an val(hat einen Fehlerparameter) und TryStrToFloat, außerdem natürlich die unsaubere Variante mit try..except.
Hoffe geholfen zu haben
Apollonius

MarquiseDeSade 21. Mai 2007 17:26

Re: Überprüfen, ob Variable einem gewissen Typ entspricht
 
:shock:

Da ich Delphi-Anfänger bin, glaube ich, dass ich noch nicht weiter bin. Ich habe mir
Delphi-Quellcode:
TryStrToFloat
und
Delphi-Quellcode:
val
mal in der Hilfe angesehen, aber geht es dabei nicht eher darum, Eingabefehler des Users so umzuändern, dass ich brauchbar damit rechnen kann ?

Ich suche aber eine Möglichkeit, die es gänzlich dem User untersagt, eine falsche Eingabe zu tätigen. Vielleicht wäre auch einfach ein simples Beispiel für mich möglich ??

danke :mrgreen:

Apollonius 21. Mai 2007 17:32

Re: Überprüfen, ob Variable einem gewissen Typ entspricht
 
Du versuchst einfach, die Benutzereingabe mit TryStrToFloat in einen Float umzuwandeln. Wenn die Funktion false zurückgibt, weißt du, dass die Benutzereingabe ungültig ist. Dann kannst du z.B. eine Messagebox zeigen lassen.

Wenn du ständig überprüfen willst, dann solltest du obige Testroutine in das onChange deines Edits schreiben.

Neutral General 21. Mai 2007 17:32

Re: Überprüfen, ob Variable einem gewissen Typ entspricht
 
Hi,

Wie wärs damit?

Delphi-Quellcode:
if pos(',',Edit1.Text) = 0 then
  ManDarfKommaSetzen;
Das find ich einfacher als TryStrToFloat oder so.

Gruß
Neutral General

dominikkv 21. Mai 2007 17:33

Re: Überprüfen, ob Variable einem gewissen Typ entspricht
 
du könntest bei jedem onKeyPress des Edits schauen ob schon ein ',' vorhanden ist (zB mit Pos), wenn ja einfach key := #0 setzen

SirThornberry 21. Mai 2007 17:36

Re: Überprüfen, ob Variable einem gewissen Typ entspricht
 
Zitat:

Zitat von dominikkv
du könntest bei jedem onKeyPress des Edits schauen ob schon ein ',' vorhanden ist (zB mit Pos), wenn ja einfach key := #0 setzen

nicht so toll! Angenommen im Edit steht "3," dann kann ich den Teil nach dem komma schon nicht mehr eingeben :wink:

Apollonius 21. Mai 2007 17:38

Re: Überprüfen, ob Variable einem gewissen Typ entspricht
 
*grummel*
Aber damit ignoriert man die Einstellung für den DecimalSeparator, und außerdem kann man mit TryStrToFloat auch gleich in einem Aufwasch die Überprüfung machen, dass nur Zahlen vorkommen.
Wie arbeitet denn der Taschenrechner? Schreibt man alles in eine Zeile (3+5*6) oder gibt man erst eine Zahl ein, bei Eingabe eine Rechenzeichens wird das Edit gelöscht, nächste Zahl...
Bei ersterer Methode ist TryStrToFloat nämlich hinfällig, die Überprüfung auf mehrere Kommata aber auch :lol:

dominikkv 21. Mai 2007 17:40

Re: Überprüfen, ob Variable einem gewissen Typ entspricht
 
Zitat:

Zitat von SirThornberry
Zitat:

Zitat von dominikkv
du könntest bei jedem onKeyPress des Edits schauen ob schon ein ',' vorhanden ist (zB mit Pos), wenn ja einfach key := #0 setzen

nicht so toll! Angenommen im Edit steht "3," dann kann ich den Teil nach dem komma schon nicht mehr eingeben :wink:

stimmt auch wieder xD
allerdings geht ja noch
Delphi-Quellcode:
if (key = ',') and (Pos(',', Edit1.Text) <> 0) then
  key := #0;

SirThornberry 21. Mai 2007 17:44

Re: Überprüfen, ob Variable einem gewissen Typ entspricht
 
das geht. Allerdings sollte man beachten das man auch per "Strg + V" und per Kontextmenü dinge aus der zwischenablage einfügen kann und das sollte man dann im OnChange korrigieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:19 Uhr.
Seite 1 von 3  1 23      

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