Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Exponentialdarstellung als String in eine Fließkommazahl kon (https://www.delphipraxis.net/96381-exponentialdarstellung-als-string-eine-fliesskommazahl-kon.html)

DelphiManiac 23. Jul 2007 14:49


Exponentialdarstellung als String in eine Fließkommazahl kon
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich habe folgendes Problem, ich bekomme einen String zurverfügung gestellt,
der folgendermaßen aussieht

'35.5E-03'


Diese Exponentendarstellung will ich als Fließkommawert haben, als double z.B.:

Leider bekomme ich folgende Exception (im Anhang)

Kann StringToFloat nicht mit der Exponentialdarstellung umgehen, oder habe ich einen falschen Fehler gemacht :lol: :lol: ?

Danke euch

sirius 23. Jul 2007 14:52

Re: Exponentialdarstellung als String in eine Fließkommazahl
 
Es dürfte an dem Komma liegen.

DelphiManiac 23. Jul 2007 14:54

Re: Exponentialdarstellung als String in eine Fließkommazahl
 
Mmmh,

also ich biege das eigentlich schon um über die formatsettings:

Delphi-Quellcode:
  GetLocaleFormatSettings(GetUserDefaultLCID, formatSettings);
  formatSettings.DecimalSeparator := '.';
  FMeasureFloat:=StrToFloat(Text,formatSettings);

silver-moon-2000 23. Jul 2007 14:57

Re: Exponentialdarstellung als String in eine Fließkommazahl
 
Zitat:

Zitat von DelphiManiac
Hallo,

ich habe folgendes Problem, ich bekomme einen String zurverfügung gestellt,
der folgendermaßen aussieht

'35.5E-03'


Diese Exponentendarstellung will ich als Fließkommawert haben, als double z.B.:

Leider bekomme ich folgende Exception (im Anhang)

Kann StringToFloat nicht mit der Exponentialdarstellung umgehen, oder habe ich einen falschen Fehler gemacht :lol: :lol: ?

Danke euch

Du musst den Punkt durch ein Komma ersetzen, dann funktionierts
Delphi-Quellcode:
 StrToFloat('35,5E-3')
edt: Und wieder mal zu spät :roll:

calculon 23. Jul 2007 14:57

Re: Exponentialdarstellung als String in eine Fließkommazahl
 
Was halt geht:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
a: real;
begin
  DecimalSeparator := '.';
  a := strtofloat('35.5E-03');
end;
Deshalb schätze ich auch:

Zitat:

Zitat von sirius
Es dürfte an dem Komma liegen.


DelphiManiac 23. Jul 2007 14:59

Re: Exponentialdarstellung als String in eine Fließkommazahl
 
@calculon:

aber ich setze doch das Trennzeichen schon auf Punkt anstatt Komma...


Delphi-Quellcode:
formatSettings.DecimalSeparator := '.';
komisch, komisch

silver-moon-2000 23. Jul 2007 15:17

Re: Exponentialdarstellung als String in eine Fließkommazahl
 
Zitat:

Zitat von DelphiManiac
@calculon:

aber ich setze doch das Trennzeichen schon auf Punkt anstatt Komma...


Delphi-Quellcode:
formatSettings.DecimalSeparator := '.';
komisch, komisch

Hallo, Antwort findet sich u.A. hier:
siehe Antwort 5

Hast Du auch geschrieben?:
Delphi-Quellcode:
StrToFloat('35.5E-3',formatsettings);
Gruß
sm2k

DelphiManiac 23. Jul 2007 15:21

Re: Exponentialdarstellung als String in eine Fließkommazahl
 
Ja habe ich geschrieben:


Delphi-Quellcode:
  GetLocaleFormatSettings(GetUserDefaultLCID, formatSettings);
  formatSettings.DecimalSeparator := '.';
  FMeasureFloat:=StrToFloat(Text,formatSettings);

DelphiManiac 23. Jul 2007 15:28

Re: Exponentialdarstellung als String in eine Fließkommazahl
 
Sorry,

aber das Problem scheint ein anderes zu sein,

der String hat noch nichtdruckbare ASCII Zeichen, die mir nicht aufgefallen sind,
der komplette String
sieht so aus:

'34.7E-03'#$D#$A


Deswegen klappt die Konvertierung nicht, und in die Exception kann die nichtdruckbaren Zeichen ja nicht darstelle,
deswegen habe ich es nicht gesehen,

mein Fehler...

Gruß
und Dank an Euch..

sirius 23. Jul 2007 15:39

Re: Exponentialdarstellung als String in eine Fließkommazahl
 
Da hing also ein [Enter] hintendrann.

DelphiManiac 24. Jul 2007 08:20

Re: Exponentialdarstellung als String in eine Fließkommazahl
 
Hallo,

setzt sich ein Enter aus <CR> <LF> zusammen?


Gruß DelphiManiac

DeddyH 24. Jul 2007 08:25

Re: Exponentialdarstellung als String in eine Fließkommazahl
 
Jawohl, anders geschrieben #13#10. Das bekommst Du mit trim() aber weg.

DelphiManiac 24. Jul 2007 15:26

Re: Exponentialdarstellung als String in eine Fließkommazahl
 
Hi
DeddyH,

das heißt Trim entfernt nicht nur Leerzeichen, sondern auch nicht druckbare Zeichen?
Aber ich brauche das <CR><LF> eigentlich an der Stelle, da ich ja das Ende erkennen muss, um
zuwissen, wann die ASCII Darstellung der Fließkommazahl zu ende ist.

Danke dir

DeddyH 24. Jul 2007 15:28

Re: Exponentialdarstellung als String in eine Fließkommazahl
 
In meiner Hilfe (hier: Delphi 5) steht zu trim() als erste Zeile:
Zitat:

Zitat von Delphi-Hilfe
Trim entfernt alle am Anfang und Ende eines Strings vorhandenen Leer- und Steuerzeichen.

Für mich ist ein Zeilenumbruch ein Steuerzeichen. :mrgreen:

DelphiManiac 24. Jul 2007 15:30

Re: Exponentialdarstellung als String in eine Fließkommazahl
 
Tja da hast du wohl recht :-)

Habe bei Leerzeichen schon aufgehört zu lesen.. :-)

Delphi-Quellcode:
if Text = 'Leerzeichen' then break;


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