hansa hat folgendes geschrieben: |
Eingaben wie "0," werden mit Nullen aufgefüllt. Die Anzahl der Nachkommastellen stelle ich hierbei im OI ein.
|
Wo denn? In Delphi? Bei TEdit? Gibt's nicht.
hansa hat folgendes geschrieben: |
Führende "," "-" usw. sind nicht erwünscht. Wäre aber wohl kein Problem, bei einem "," am Anfang daraus "0," zu machen.
|
Ich glaube, es geht hier um ein TEdit, das die Eingabe reeller Zahlen ermöglichen soll. Und wenn nicht, habe ich eine Lösung präsentiert, die das kann. Zu den reellen Zahlen gehören auch nun mal auch Vorzeichenbehaftete und Angaben der 10er Potenz (1,23E+34).
Das man Deine Lösung noch abändern kann, steht außer Frage. Aber so, wie sie dasteht, funktioniert sie erstens nicht und ist zweitens eben unvollständig. Und mit allen (selbstverständlich einfach zu implementierenden) Änderungen und Erweiterungen erscheint Deine Lösung ziemlich kompliziert (an Codegröße gemessen).
Zu Der Frage, ob der Anwender wissen sollte, ob nun der Punkt oder das Komma der Dezimalseparator sein soll, verweise ich Dich auf den Dezimalpunkt auf der numerischen Tastatur. Jeder Datentypist wird Dir mit deiner Einstellung eins Husten, wenn Du ihm sagst, das in der deutschen Version der Dezimalpunkt eben ein Dezimalkomma ist und er deshalb bitte auf die komfortable Eingabe via numerischer Tastatur verzichten muss.
hansa hat folgendes geschrieben: |
Das überlasse ich doch nicht dem Anwender.
|
Eben, dafür sorge ich im Code.
Obwohl Du mit der Prämisse, Probleme zu vermeiden, anstatt Sie nachträglich zu lösen, Recht hast, passt das hier (leider) nicht. Wenn ich eine Art TFloatEdit haben will, lande ich IMHO mit deinem Ansatz (OnKeyPress) in einer Sackgasse (Siehe Oben). Mein Vorschlag, das mit TryFloatToStr zu machen, ist auch nicht perfekt, hier wäre ein DEA angebracht. Mir ging es um eine Möglichkeit, die vorhandenen Mittel zu nutzen, um zum Ziel zu kommen. Eure Einwände bezügl. des Try...Except sind einfach korrekt. Aber dazu ist so ein Forum ja da: Dazulernen und Erfahrungen austauschen.
Ich meine, eine Kombination aus OnKeyPress und OnChange (bzw. über einen Validierer) wäre stilistisch ideal: OnKeyPress lässt nur legale Zeichen zu, während der Validierer die Syntax überprüft.
@GKar: Die Jedi-Bibliotheken gibt es hier
www.delphi-jedi.org/