![]() |
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:
ich weiss nich ob das so funktioniert und dann weiss ich auch nich wie ich das , zu einem . machen soll...
var i:integer; //Zählervariable
for i:=1 to length(wort) do begin if wort[i] = ',' then ???? else Inc(i); end; vllt habt ihr einen tipp oder eine idee wie man das realisieren könnte? |
Re: Umwandeln eines , zu . für Berechnung
|
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. |
Re: Umwandeln eines , zu . für Berechnung
Einfach so:
Delphi-Quellcode:
Function CommaToDot(const aString: String): String;
Begin Result := StringReplace(AString, ',', '.', [rfReplaceAll]); End; |
Re: Umwandeln eines , zu . für Berechnung
Zitat:
Wenn ja, dann vorher die "." löschen :)
Delphi-Quellcode:
Bye Christian
Function CommaToDot(const aString: String): String;
Begin Result := StringReplace(StringReplace(AString, '.', '', [rfReplaceAll]), ',', '.', [rfReplaceAll]); End; |
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:
Nebenbei kannst du Delphi natürlich auch dazu bringen, das Komma als gültigen Dezimalseparator an zu sehen. Schau mal in der Hilfe:
var i:integer; //Zählervariable
for i:=1 to length(wort) do if wort[i] = ',' then wort[i] := '.'; 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:
Bemerkt hättest du den Fehler vermutlich nicht, da eine Zahl nie mit einem Komma anfängt.
var i:integer; //Zählervariable
for i:=0 to length(wort)-1 do if wort[i] = ',' then wort[i] := '.'; |
Re: Umwandeln eines , zu . für Berechnung
Zitat:
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! |
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?
|
Re: Umwandeln eines , zu . für Berechnung
Alternativ geht auch noch
Delphi-Quellcode:
Gruß
while pos (',',s) <> 0 do
s[pos(',',s)] := '.'; tr909 |
Re: Umwandeln eines , zu . für Berechnung
Hallo,
Zitat:
![]() Gruß Hawkeye |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:24 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