![]() |
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 |
Re: Umwandeln eines , zu . für Berechnung
ich habe gerade gemerkt, dass ich etwas falsch beschrieben haben was ich möchte... eure ganzen versionen funktionieren lediglich wenn ich mit Strings arbeite.. allerdings wollt ich ja nur mit Zahlen arbeiten und falls jmd eine Zahl mit Komma eingibt, dann soll sie halt in eine Zahl mit Punkt umgewandelt werden.. oder würde das funktionieren wenn ich die ganze Zeit mit strings arbeite und dann die Zahl einfach mit strtoint bzw strtofloat umkonvertiere?
|
Re: Umwandeln eines , zu . für Berechnung
Du musst doch irgendwo eh deine Zahlen eingeben oder nicht?
Also flux umwandeln und rechnen mit deinen genannten Funktionen. Aber auch dann kannst du die meisten wenn nicht alle unsere Vorschlaege beruecksichtigen. Aber auch was die Laendersache angeht, nicht jeder Hobbyprogrammierer hat seine Software auf der ganze Welt laufen also ich denke da kann er mal noch getrost drauf verzichten. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:21 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