![]() |
Datenbank: Paradox • Version: 7 • Zugriff über: Query, DataSource
(N)umerisches Feld akzeptiert keinen Punkt
Guten Abend,
sobald ich in ein Edit vom Typ (n)umerisch einen Betrag mit Punkt schreibe, erhalte ich die Fehlermeldung "kein gültiger Fließkommawert". Was muß ich bitte tun, damit statt eines ',' ein '.' akzeptiert wird? Vielen Dank! Lombi |
Re: (N)umerisches Feld akzeptiert keinen Punkt
Delphi-Quellcode:
DecimalSeparator _= '.';
|
Re: (N)umerisches Feld akzeptiert keinen Punkt
und wieder umstellen nicht vergessen?
|
Re: (N)umerisches Feld akzeptiert keinen Punkt
Guten Morgen.
Wir sollten immer daran denken, dass die von der Unit SysUtils importierten Systemeinstellungen (DecimalSeparator, ThousandsSeparator) das Format der interaktiven Eingaben (TEdit) diktieren. Ist nicht schön, wenn eine Anwendung von vielen, die eventuell sogar gleichzeitig geöffnet sind, sich nicht an die Systemvorgaben hält. Ein Sonderfall ist die nicht interaktive Übernahme von Display-Daten z.B. aus Dateien. Hier würde ich (D3) die Zeichenketten vorbehandeln und dann der normalen Verarbeitung zuführen:
Delphi-Quellcode:
In D7 ist das nicht nötig. Dort stehen GetLocaleFormatSettings() und die überladenen Konvertierungsfunktionen zur Verfügung.
function Translate(const s, sOld, sNew: String): String;
var i, iPos, iLen: integer; begin SetLength(Result, Length(s)); iLen := 0; for i := 1 to Length(s) do begin iPos := Pos(s[i], sOld); if iPos > Length(sNew) then Continue; Inc(iLen); if iPos > 0 then Result[iLen] := sNew[iPos] else Result[iLen] := s[i]; end; SetLength(Result, iLen); end; procedure TDemoForm.ButtonClick(Sender: TObject); var e: Extended; begin e := StrToFloat(Translate('123,456.78', '.,', ',.')); end; Grüße vom marabu Edit: Fehler in Translate() korrigiert... |
Re: (N)umerisches Feld akzeptiert keinen Punkt
Delphi-Quellcode:
Fehlermeldung: ''123,456.78 ist kein gültiger Fließkommawert'.
procedure TDemoForm.ButtonClick(Sender: TObject);
var e: Extended; begin e := StrToFloat(Translate('123,456.78', '.,', ',.')); end; Diese Meldung erhalte ich auch mit ','. Viele Grüße Lombi |
Re: (N)umerisches Feld akzeptiert keinen Punkt
Klar - weil die Tausenderpunkte bei der Konvertierung nicht mehr drin sein dürfen. Probier mal so:
Delphi-Quellcode:
marabu
procedure TDemoForm.ButtonClick(Sender: TObject);
var e: Extended; begin e := StrToFloat(Translate('123,456.78', '.,', DecimalSeparator)); end; |
Re: (N)umerisches Feld akzeptiert keinen Punkt
Ne, klappt leider nicht.
|
Re: (N)umerisches Feld akzeptiert keinen Punkt
dann entfern doch die Tausenderpunkte mit Pos() und delete() vorher.
mfg, Ratte |
Re: (N)umerisches Feld akzeptiert keinen Punkt
Hallo Lombi,
da war ein Fehler in meiner Funktion. Ich habe ihn korrigiert und du müsstest dir den Code nochmal kopieren. Sorry marabu |
Re: (N)umerisches Feld akzeptiert keinen Punkt
Hi marabu,
danke für die Nachricht. Es gibt nur noch ein Problem und zwar mit der Berechnung der MwSt. Bei einer Dezimalzahl mit Punkt bleibt das Edit VKbrutto leer. Viele Grüße Lombi |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:13 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