Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Zahl aus Datei einlesen , Format passt nicht (https://www.delphipraxis.net/185529-zahl-aus-datei-einlesen-format-passt-nicht.html)

bernhard_LA 18. Jun 2015 15:00

Zahl aus Datei einlesen , Format passt nicht
 
ich lese aus eine Datei einen String ein und möchte dann mit StrToFloat konvertieren nur bekomme ich leider ein Problem
mit dem Wert 23.24 in der Englischen Schreibweise wenn ich ein deutsche Windows verwenden.

Wie formatiere ich am Besten zwischen allen Zahlenformaten hin und her ?
Gibt es bessere Lösungen als unter http://www.delphipraxis.net/95827-st...t-nur-mit.html

gammatester 18. Jun 2015 15:19

AW: Zahl aus Datei einlesen , Format passt nicht
 
Wenn es wirklich mit Dezimalpinkt ist, kannst Du die val-Prozedur nehmen.

rwalper 18. Jun 2015 15:21

AW: Zahl aus Datei einlesen , Format passt nicht
 
Eine Möglichkeit wäre, die globale Variable
Delphi-Quellcode:
FormatSettings.DecimalSeparator
zur Konvertierung umzusetzen:
Delphi-Quellcode:
 
  ch := FormatSettings.DecimalSeparator;
  FormatSettings.DecimalSeparator := '.';
  try
    f := StrToFloat(s);
  finally
    FormatSettings.DecimalSeparator := ch;
  end;
Wobei ich Folgendes bevorzuge:
Delphi-Quellcode:
 
  s := StringReplace(s, '.', FormatSettings.DecimalSeparator, []);
  f := StrToFloat(s);

baumina 18. Jun 2015 15:27

AW: Zahl aus Datei einlesen , Format passt nicht
 
Man kann auch diese Funktion verwenden:

Delphi-Quellcode:
function StrToFloat(const S: string; const AFormatSettings: TFormatSettings): Extended;

Natcree 19. Jun 2015 07:26

AW: Zahl aus Datei einlesen , Format passt nicht
 
bei mir hat das geholfen

Delphi-Quellcode:
    begin  
      ThousandSeparator := '.';
      DecimalSeparator := ',';
      ...
    end;
wenn nicht nochmal versuchen in der systemsteuerung/region und sprache alle daten zur formatierung der Uhrzeit und Währung zurückzusetzen.

ringli 19. Jun 2015 07:58

AW: Zahl aus Datei einlesen , Format passt nicht
 
Zitat:

Zitat von Natcree (Beitrag 1305639)
wenn nicht nochmal versuchen in der systemsteuerung/region und sprache alle daten zur formatierung der Uhrzeit und Währung zurückzusetzen.

Das ist nicht dein Ernst, oder? Du kannst einem Benutzer doch nicht deine bevorzugten Einstellungen aufzwingen nur weil du es in deinem Programm so benötigst. Oder habe ich dich jetzt falsch verstanden?

[EDIT]
Ich denke da ist die Lösung von Baumina die beste Methode.

DeddyH 19. Jun 2015 08:10

AW: Zahl aus Datei einlesen , Format passt nicht
 
Zitat:

Zitat von ringli (Beitrag 1305641)
[EDIT]
Ich denke da ist die Lösung von Baumina die beste Methode.

Die ist ja auch genau dafür vorgesehen, da sollte man sie auch nutzen ;)

Popov 19. Jun 2015 08:43

AW: Zahl aus Datei einlesen , Format passt nicht
 
Delphi-Quellcode:
var
  fs: TFormatSettings;
  s: string;
  e: Extended;
begin
  fs.DecimalSeparator := '.';
  s := '1234.567';

  e := StrToFloat(s, fs);
  e := e * 2;

  s := FloatToStr(e, fs);
  ShowMessage(s);
end;
Man kann ein beliebiges Trennzeichen wählen:

Delphi-Quellcode:
var
  fs: TFormatSettings;
  s: string;
  e: Extended;
begin
  fs.DecimalSeparator := '~'; //Tilde
  s := '1234~567';

  e := StrToFloat(s, fs);
  e := e * 2;

  s := FloatToStr(e, fs);
  ShowMessage(s);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:06 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