AGB  ·  Datenschutz  ·  Impressum  







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

String nach Double?

Ein Thema von daredd · begonnen am 16. Nov 2008 · letzter Beitrag vom 29. Mär 2017
Antwort Antwort
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.923 Beiträge
 
Delphi 12 Athens
 
#1

AW: String nach Double?

  Alt 29. Mär 2017, 12:48
In einigermaßen aktuellen Delphiversionen kann man auch direkt dem Konstruktor eine Landessprache mitgeben:
http://docwiki.embarcadero.com/Libra...ettings.Create
Delphi-Quellcode:
USFormatSettings := TFormatSettings.Create('en-US');
...
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 Beiträge
 
Delphi 12 Athens
 
#2

AW: String nach Double?

  Alt 29. Mär 2017, 13:19
Delphi-Quellcode:
USFormatSettings := TFormatSettings.Create('en-US');
...
Das kann aber immer noch schief gehen, wenn der User seine US-Settings angepasst hat (ich hätte ihn würgen können).

Sicherer ist dann immer noch TFormatSettings.Invariant.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
981 Beiträge
 
Delphi 6 Professional
 
#3

AW: String nach Double?

  Alt 29. Mär 2017, 13:42
Hmm..

da es dei TFormatSettings in Delphi 7 noch nicht gibt (soweit ich weis), kannst Du eventuell mit der Funktion was Anfangen:
(Diese verwende ich bei Delphi 6)

Delphi-Quellcode:
function StrToFloatD(AStr : string; ADef : double = 0):double;
begin
  AStr := StringReplace(AStr,',',DecimalSeparator,[]);
  AStr := StringReplace(AStr,'.',DecimalSeparator,[]);
  result := StrToFloatDef(AStr,ADef);
end;
Damit ist eigendlich sicher gestellt, das der DecimalSeparator im String steht (ausgenommen, wenn der String tausendertrennzeichen enthält ) und somit das normale StrToFloatDef einen brauchbaren Sting bekommt.

Dieses verwendet nämlich immer den DecimalSeparator.

Alternativ kann man auch vor StrToFloat den DecimalSeparator auf '.' setzen und nachher wieder zurück. Bedenke jedoch, dass es dann an anderer Stelle in deinem Programm Probleme geben kann, da DecimalSeparator eine globale Var ist...
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.168 Beiträge
 
Delphi 12 Athens
 
#4

AW: String nach Double?

  Alt 29. Mär 2017, 13:55
Dann schon besser so ...
Delphi-Quellcode:
function StrToFloatD(AStr : string; ADef : double = 0):double;
begin
  if '.' = DecimalSeparator then
    AStr := StringReplace(AStr,',',DecimalSeparator,[])
  else if ',' = DecimalSeparator then
    AStr := StringReplace(AStr,'.',DecimalSeparator,[])
  else
    EXception; // das sollte nie passieren, oder gibt es doch solche Länder ?
  result := StrToFloatDef(AStr,ADef);
end;
  Mit Zitat antworten Zitat
A.Griffin

Registriert seit: 17. Feb 2017
94 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: String nach Double?

  Alt 29. Mär 2017, 13:59
Ich wollte eigentlich wissen ob es global möglich ist, so dass ich nicht im jedem Programm den DecimalSeperator festlegen muss. Jetzt habe ich einfach bei FormCreate "DecimalSeparator := '.';" drin. Ich fange eh alle "," ab und ersetze sie durch ".".
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#6

AW: String nach Double?

  Alt 29. Mär 2017, 14:06
Schreibe dir doch eine minimale DLL die genau das tut und die lädst du in jedes deiner Programme.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#7

AW: String nach Double?

  Alt 29. Mär 2017, 14:18
Ich wollte eigentlich wissen ob es global möglich ist, so dass ich nicht im jedem Programm den DecimalSeperator festlegen muss. Jetzt habe ich einfach bei FormCreate "DecimalSeparator := '.';" drin. Ich fange eh alle "," ab und ersetze sie durch ".".
Global, für alle Programme?

Dann mach das doch in den Systemeinstellungen von Windows.

@HolgerX

TFormatSettings gibt es in Delphi 7. Mein Beispiel stammt aus Delphi 7.

Geändert von nahpets (29. Mär 2017 um 15:46 Uhr) Grund: Wie immer, Schreibfehler :-(
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
981 Beiträge
 
Delphi 6 Professional
 
#8

AW: String nach Double?

  Alt 29. Mär 2017, 15:26
@HolgerX

TFormatSettings gibt es in Delphi 7. Mein Beispiel stamm aus Delphi 7.
OK, danke.
Dann scheint es mit D7 hinein gekommen zu sein, bei D6 sind es noch einfache globale Variablen..
  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 04:02 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