AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Überprüfen, ob Variable einem gewissen Typ entspricht
Thema durchsuchen
Ansicht
Themen-Optionen

Überprüfen, ob Variable einem gewissen Typ entspricht

Ein Thema von MarquiseDeSade · begonnen am 21. Mai 2007 · letzter Beitrag vom 22. Mai 2007
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von MarquiseDeSade
MarquiseDeSade

Registriert seit: 18. Apr 2007
Ort: Mainz
55 Beiträge
 
Turbo Delphi für Win32
 
#1

Überprüfen, ob Variable einem gewissen Typ entspricht

  Alt 21. Mai 2007, 18:00
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:

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
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#2

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

  Alt 21. Mai 2007, 18:03
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
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von MarquiseDeSade
MarquiseDeSade

Registriert seit: 18. Apr 2007
Ort: Mainz
55 Beiträge
 
Turbo Delphi für Win32
 
#3

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

  Alt 21. Mai 2007, 18:26


Da ich Delphi-Anfänger bin, glaube ich, dass ich noch nicht weiter bin. Ich habe mir TryStrToFloat und 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
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#4

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

  Alt 21. Mai 2007, 18:32
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.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

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

  Alt 21. Mai 2007, 18:32
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
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#6

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

  Alt 21. Mai 2007, 18:33
du könntest bei jedem onKeyPress des Edits schauen ob schon ein ',' vorhanden ist (zB mit Pos), wenn ja einfach key := #0 setzen
Dominik
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

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

  Alt 21. Mai 2007, 18:36
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
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#8

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

  Alt 21. Mai 2007, 18:38
*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
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#9

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

  Alt 21. Mai 2007, 18:40
Zitat von SirThornberry:
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
stimmt auch wieder xD
allerdings geht ja noch
Delphi-Quellcode:
if (key = ',') and (Pos(',', Edit1.Text) <> 0) then
  key := #0;
Dominik
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#10

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

  Alt 21. Mai 2007, 18:44
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 07:18 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