Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Umwandeln eines , zu . für Berechnung (https://www.delphipraxis.net/99555-umwandeln-eines-zu-fuer-berechnung.html)

Lotus 13. Sep 2007 22:11


Umwandeln eines , zu . für Berechnung
 
wie ihr sicher alle wisst ist eine zahl mit einem Komma (,) für delphi keine zahl
kurz gesagt 3,5 = string und 3.5 Fließkommazahl
ich moechte jetzt.. das das , automatisch für delphi zu einem . umgewandelt wird..

ich dacht mir das man das über eine schleife z.B. so machen könnte

Delphi-Quellcode:
var i:integer; //Zählervariable

for i:=1 to length(wort) do begin
if wort[i] = ',' then ????
else Inc(i);
end;
ich weiss nich ob das so funktioniert und dann weiss ich auch nich wie ich das , zu einem . machen soll...
vllt habt ihr einen tipp oder eine idee wie man das realisieren könnte?

Dax 13. Sep 2007 22:12

Re: Umwandeln eines , zu . für Berechnung
 
Delphi-Referenz durchsuchenStringReplace

grenzgaenger 13. Sep 2007 22:16

Re: Umwandeln eines , zu . für Berechnung
 
was willste, eine string in eine dezimalzahl konvertieren?

strtofloat

berücksichtigt die einstellung decimalpoint, aus deiner windows ländereinstellung.

Mackhack 13. Sep 2007 22:18

Re: Umwandeln eines , zu . für Berechnung
 
Einfach so:

Delphi-Quellcode:
Function CommaToDot(const aString: String): String;
Begin
  Result := StringReplace(AString, ',', '.', [rfReplaceAll]);
End;

Kedariodakon 13. Sep 2007 22:50

Re: Umwandeln eines , zu . für Berechnung
 
Zitat:

Zitat von Mackhack
Einfach so:

Delphi-Quellcode:
Function CommaToDot(const aString: String): String;
Begin
  Result := StringReplace(AString, ',', '.', [rfReplaceAll]);
End;

gibt es denn auch Tausender Trennzeichen?
Wenn ja, dann vorher die "." löschen :)

Delphi-Quellcode:
Function CommaToDot(const aString: String): String;
Begin
  Result := StringReplace(StringReplace(AString, '.', '', [rfReplaceAll]), ',', '.', [rfReplaceAll]);
End;
Bye Christian

guidok 14. Sep 2007 05:54

Re: Umwandeln eines , zu . für Berechnung
 
Um noch auf deine eigene Lösung einzugehen, die natürlich auch funktioniert, wenn auch vielleicht nicht so schnell:

Delphi-Quellcode:
var i:integer; //Zählervariable

for i:=1 to length(wort) do
  if wort[i] = ',' then wort[i] := '.';
Nebenbei kannst du Delphi natürlich auch dazu bringen, das Komma als gültigen Dezimalseparator an zu sehen. Schau mal in der Hilfe:

DecimalSeparator Variable

Ist das Zeichen, das in einer Zahl den ganzzahligen vom fraktionalen Teil trennt. Diese Variable muss einen anderen Wert als #0 haben.

Unit
SysUtils

Syntax


var DecimalSeparator: Char;

Edit: Ich habe grad noch gesehen, dass im oben geschriebenen Code noch ein Fehler steckt, da das erste Zeichen im String nicht den Index 1 sondern 0 hat muss es folgendermaßen lauten:

Delphi-Quellcode:
var i:integer; //Zählervariable

for i:=0 to length(wort)-1 do
  if wort[i] = ',' then wort[i] := '.';
Bemerkt hättest du den Fehler vermutlich nicht, da eine Zahl nie mit einem Komma anfängt.

Lotus 14. Sep 2007 06:23

Re: Umwandeln eines , zu . für Berechnung
 
Zitat:

Zitat von Mackhack
Einfach so:

Delphi-Quellcode:
Function CommaToDot(const aString: String): String;
Begin
  Result := StringReplace(AString, ',', '.', [rfReplaceAll]);
End;


und bei dieser version geht er die komplette zahl durch? also kann ich noch so viele zahlen davor haben, er wird das komma finden? wird wahrscheinlich genau durch das [rfReplaceAll] realisiert.. ich werd mal in der delphi hilfe schauen!

vielen dank an euch alle.. werde das sobald ich zeit finde mal ausprobieren und dann hoff ich mal das das klappt!

Luckie 14. Sep 2007 07:40

Re: Umwandeln eines , zu . für Berechnung
 
Und wenn das Programm auf einem System mit anderen Ländereinstellungen läuft, habt ihr ein Problem. Warum benutzt ihr keine Formatierungsfunktionen, die die Ländereinstellungen berücksichtigen?

tr909 14. Sep 2007 07:55

Re: Umwandeln eines , zu . für Berechnung
 
Alternativ geht auch noch
Delphi-Quellcode:
while pos (',',s) <> 0 do
 s[pos(',',s)] := '.';
Gruß
tr909

Hawkeye219 14. Sep 2007 08:44

Re: Umwandeln eines , zu . für Berechnung
 
Hallo,

Zitat:

Zitat von guidok
[...]da das erste Zeichen im String nicht den Index 1 sondern 0 hat[...]

Widerspruch: klick

Gruß Hawkeye


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:16 Uhr.
Seite 1 von 2  1 2      

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