AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

StrToFloat - mit 1000er Trennzeichen

Ein Thema von FrankTorsten · begonnen am 22. Jul 2010 · letzter Beitrag vom 22. Jul 2010
Antwort Antwort
FrankTorsten

Registriert seit: 8. Jul 2010
5 Beiträge
 
Delphi 2 Desktop
 
#1

StrToFloat - mit 1000er Trennzeichen

  Alt 22. Jul 2010, 12:54
Delphi-Version: 2005
Hallo

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 ...

Delphi-Quellcode:
For i:= 1 to 38 do
 Begin
 Lagerhausbedarf1:= StrtoFloat (AdvSpreadGrid1.Cells[4, i]);
 Lagerhausbedarf2:= StrtoFloat (AdvSpreadGrid1.Cells[5, i]);
 end;
Die Ursprungswerte sind jetzt allerdings (und daran liegt es wohl) mit einem 1000er Trennzeichen im Stringgrid drin.

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??
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: StrToFloat - mit 1000er Trennzeichen

  Alt 22. Jul 2010, 13:01
Ja das setzen der Konstanten DecimalSeparator/ThousandSeparator oder die Verwendung der überladenen Konvertierungsfunktionen mit entsprechenden Formaten
Markus Kinzler
  Mit Zitat antworten Zitat
FrankTorsten

Registriert seit: 8. Jul 2010
5 Beiträge
 
Delphi 2 Desktop
 
#3

AW: StrToFloat - mit 1000er Trennzeichen

  Alt 22. Jul 2010, 13:57
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

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;
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: StrToFloat - mit 1000er Trennzeichen

  Alt 22. Jul 2010, 14:42
Einfacher wäre aber das setzen der erwähnten Konstante gewesen:

ThousandSeparator = '.';
Markus Kinzler
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#5

AW: StrToFloat - mit 1000er Trennzeichen

  Alt 22. Jul 2010, 17:45
Hallo,
Einfacher wäre aber das setzen der erwähnten Konstante gewesen:

ThousandSeparator = '.';
Die Funktion StrToFloat lässt sich davon leider nicht beeindrucken...

Gruß Hawkeye
  Mit Zitat antworten Zitat
Mschmidt

Registriert seit: 4. Jul 2010
Ort: Berlin
62 Beiträge
 
Delphi XE2 Professional
 
#6

AW: StrToFloat - mit 1000er Trennzeichen

  Alt 22. Jul 2010, 18:09
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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: StrToFloat - mit 1000er Trennzeichen

  Alt 22. Jul 2010, 18:52
Mit
Lagerhausbedarf1:= StrtoFloat (StringReplace(AdvSpreadGrid1.Cells[4, i], ThousandSeparator, '', [rfReplaceAll])); müsste dieses Problem aber wieder zu umschiffen sein, oder meintest Du etwas anderes?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:40 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