![]() |
Delphi-Version: 2005
StrToFloat - mit 1000er Trennzeichen
Hallo :-D
Ich habe in einem Stringgrid eine berechnete Spalte. Jetzt wollte ich die einzelnen Werte dieser Spalte auslesen - bissel damit was rechnen, und dann den berechneten Wert in einer anderen Spalte eintragen. Probleme gehen dann allerdings schon beim auslesen der Zellwerte los ... :wink:
Delphi-Quellcode:
Die Ursprungswerte sind jetzt allerdings (und daran liegt es wohl) mit einem 1000er Trennzeichen im Stringgrid drin.
For i:= 1 to 38 do
Begin Lagerhausbedarf1:= StrtoFloat (AdvSpreadGrid1.Cells[4, i]); Lagerhausbedarf2:= StrtoFloat (AdvSpreadGrid1.Cells[5, i]); end; Und genau an der Stelle, wenn die oben angegebene Schleife die erste Zahl in die Finger bekommt, die über 1000 liegt, kommt dann die Fehlermeldung: '1.390' ist not a valid floating point value Gibt es für dieses *Problemchen* eine relativ unkomplizierte Lösung?? |
AW: StrToFloat - mit 1000er Trennzeichen
Ja das setzen der Konstanten DecimalSeparator/ThousandSeparator oder die Verwendung der überladenen Konvertierungsfunktionen mit entsprechenden Formaten
|
AW: StrToFloat - mit 1000er Trennzeichen
In die Themen hätte ich mich jetzt erst einlesen müssen, nachdem ich das durch Google mal habe suchen lassen - trotzdem danke für den Hinweis. Da weiß ich dann doch wenigstens schon Bescheid, wie man es bei komplizierteren Sachen machen müsste.
In meinem wohl relativ unkomplizierten Fall (ging generell NUR um den 1000er-Punkt) hat dann zum Glück auch ein *ersetzen* gereicht - na Gott sei Dank :-D
Delphi-Quellcode:
For i:= 1 to 38 do
Begin Lagerhausbedarf1:= StrtoFloat (StringReplace(AdvSpreadGrid1.Cells[4, i], '.', '', [rfReplaceAll])); Lagerhausbedarf2:= StrtoFloat (StringReplace(AdvSpreadGrid1.Cells[5, i], '.', '', [rfReplaceAll])); //Und der Rest hat dann erfreulicherweise sogar funktioniert :) If Lagerhausbedarf1 > Lagerhausbedarf2 then AdvSpreadGrid1.Cells[10, i]:= FloatToStrF ((Lagerhausbedarf1 -1500)/8000,ffNumber,10,2) else AdvSpreadGrid1.Cells[10, i]:= FloatToStrF ((Lagerhausbedarf2 -1500)/8000,ffNumber,10,2); AdvSpreadGrid1.Alignments[10, i] := taRightJustify; end; |
AW: StrToFloat - mit 1000er Trennzeichen
Einfacher wäre aber das setzen der erwähnten Konstante gewesen:
Delphi-Quellcode:
ThousandSeparator = '.';
|
AW: StrToFloat - mit 1000er Trennzeichen
Hallo,
Zitat:
Gruß Hawkeye |
AW: StrToFloat - mit 1000er Trennzeichen
ich gebe zu bedenken, dass solche Konstrukte sehr fehleranfällig und nicht für den internationalen Markt geeignet sind.
Was passiert, wenn ich das System auf 2057(englisch UK) umstelle? Komma=punkt, Punkt=Komma. Ich würde nicht den Wert an sich ändern, sondern nur dessen Darstellung. :-mschmidt |
AW: StrToFloat - mit 1000er Trennzeichen
Mit
Delphi-Quellcode:
müsste dieses Problem aber wieder zu umschiffen sein, oder meintest Du etwas anderes?
Lagerhausbedarf1:= StrtoFloat (StringReplace(AdvSpreadGrid1.Cells[4, i], ThousandSeparator, '', [rfReplaceAll]));
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:48 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