![]() |
Re: Überprüfen, ob Variable einem gewissen Typ entspricht
Danke für eure zahlreichen Antworten. Ich werde gleich mal ein bissl rumprobieren. Die Eingabe ist zu 100 % über Buttons geregelt. Der Taschenrechner hat das selbe Layout, wie der Standartrechner von Windows...
Kannst du mal die Anwendung von
Delphi-Quellcode:
an einem Beispiel zeigen ?
TryStrToFloat
|
Re: Überprüfen, ob Variable einem gewissen Typ entspricht
Zitat:
Bei Fließkommazahlen ist eine sofortige Validierung und entsprechende Fehlermeldung/Anpassung einfach unmöglich, weshalb ich sie vollständig auf den Zeitpunkt nach der Eingabe (Fokusverlust, Button-Klick, ...) verlagern würde (dann würde ich wirklich TryStrToFloat empfehlen ;) ). |
Re: Überprüfen, ob Variable einem gewissen Typ entspricht
Hm. Hast recht. Aber wenn die Überprüfung wirklich erst im onExit oder ButtonClick ist, dann geht es (wie du gesagt hast).
|
Re: Überprüfen, ob Variable einem gewissen Typ entspricht
Dachte nicht, dass dieses Thema so unterschiedliche Umsetzungsvarianten zur Verfügung stellt :lol:
Da ich aber erst ca. 3 wochen Delphierfahrung habe, würde ich mich über ein konkretes Beispiel mit der
Delphi-Quellcode:
freuen....
TryStrToFloat-Anweisung
|
Re: Überprüfen, ob Variable einem gewissen Typ entspricht
Delphi-Quellcode:
Der Text der MessageBox ist natürlich nach Belieben :-D
procedure TForm1.EingabePruefen;
var h:float; begin if not TryStrToFloat(edit1.text,h) then begin showmessage('Sie Schuft! Geben Sie gefälligst eine gültige Fließkommazahl ein!'); edit1.text:=''; end; end; |
Re: Überprüfen, ob Variable einem gewissen Typ entspricht
So sieht es bei mir im Code aus:
Delphi-Quellcode:
Nun zu meinem Problem. Es arbeitet alles einwandfrei, aber erst ab dem 3. Kommata :|
procedure TForm1.Button15Click(Sender: TObject);
var h:double; begin if TryStrToFloat(edit1.Text,h) then edit1.Text:=edit1.text+',' else begin showmessage('Sie haben schon ein Kommata'); edit1.Text:=' '; end; end; Beispiel: Der User kann eingeben... 2,2,3, erst beim rotem Kommata erscheint die Fehlermeldung. Die Fehlermeldung soll aber schon beim 2. Komma erscheinen :angel2: |
Re: Überprüfen, ob Variable einem gewissen Typ entspricht
Bei welcher Gelegenheit wird dieser Button denn geklickt? Um ein Komma zu setzen? Das funktioniert nicht, du darfst erst ganz am Ende, wenn die Zahl komplett sein soll, prüfen.
|
Re: Überprüfen, ob Variable einem gewissen Typ entspricht
Liste der Anhänge anzeigen (Anzahl: 1)
Mh, ich glaube, ich muss ein bissl besser erklären...
Also, der Rechner besteht aus einem edit1, welches readOnly=true gesetzt ist. Die Eingabe der Zahlen erfolgt über 9 Buttons. Weitere 4 Buttons für die Rechenarten und 1 Button für das Kommata. Nun soll der Benutzer über die Buttons seine Zahlen eingeben. Wenn er dann z.B. die Zahl 1,2,3 eingibt(indem er auf den Kommata-Button drückt), soll schon beim 2. Kommata die Meldung erscheinen, das dies nicht möglich ist. Wie kann ich das realisieren ? Im Anhang ist ein ScreenShot vom Rechner... Ah, und warum lässt sich die Farbe der Zahlen auf den Butten eigentlich nicht verändern ? |
Re: Überprüfen, ob Variable einem gewissen Typ entspricht
Wenn du das so machen willst, ist es mit trystrtofloat nicht möglich, du solltest pos verwenden, um zu prüfen, ob schon ein Komma da ist. TryStrToFloat geht nur dann, wenn die Zahl schon vollständig vorliegt.
Die Einzahl von Kommata lautet übrigens Komma :???: |
Re: Überprüfen, ob Variable einem gewissen Typ entspricht
Wenn du das rein mit Buttons machst kannst du natürlich auch einfach eine Zählvariable mit dem Komma Button koppeln.
Also wenn der Button geklickt wird erhöhst du die variable um 1 und prüfst bei jedem klick auf den button auch ob die variable schon erhöht wurde oder nicht. Nur wenn nicht wird ein Komma geschrieben. Wenn eine Operationstaste Taste wie +,-,*,\,sqrt usw... gedrückt wird setzt du die variable zurück. Als Code könnte ich mir so etwas denken:
Delphi-Quellcode:
Willnix
procedure TForm1.KommaButton1Click(Sender: TObject);
begin if KommaCount < 1 then begin Edit1.Text := Edit1.Text+','; inc(KommaCount); end else begin ShowMessage('Ähäm.. Nur EIN Komma!'); end; end; procedure TForm1.OperationsButton2Click(Sender: TObject); begin KommaCount := 0; end; procedure TForm1.FormCreate(Sender: TObject); begin KommaCount := 0; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz