AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Umwandeln eines , zu . für Berechnung
Thema durchsuchen
Ansicht
Themen-Optionen

Umwandeln eines , zu . für Berechnung

Ein Thema von Lotus · begonnen am 13. Sep 2007 · letzter Beitrag vom 14. Sep 2007
Antwort Antwort
Seite 1 von 2  1 2      
Lotus

Registriert seit: 26. Feb 2007
85 Beiträge
 
Delphi 7 Personal
 
#1

Umwandeln eines , zu . für Berechnung

  Alt 13. Sep 2007, 22:11
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?
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: Umwandeln eines , zu . für Berechnung

  Alt 13. Sep 2007, 22:12
Delphi-Referenz durchsuchenStringReplace
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#3

Re: Umwandeln eines , zu . für Berechnung

  Alt 13. Sep 2007, 22:16
was willste, eine string in eine dezimalzahl konvertieren?

strtofloat

berücksichtigt die einstellung decimalpoint, aus deiner windows ländereinstellung.
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#4

Re: Umwandeln eines , zu . für Berechnung

  Alt 13. Sep 2007, 22:18
Einfach so:

Delphi-Quellcode:
Function CommaToDot(const aString: String): String;
Begin
  Result := StringReplace(AString, ',', '.', [rfReplaceAll]);
End;
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Umwandeln eines , zu . für Berechnung

  Alt 13. Sep 2007, 22:50
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
Christian
  Mit Zitat antworten Zitat
guidok

Registriert seit: 28. Jun 2007
417 Beiträge
 
#6

Re: Umwandeln eines , zu . für Berechnung

  Alt 14. Sep 2007, 05:54
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.
  Mit Zitat antworten Zitat
Lotus

Registriert seit: 26. Feb 2007
85 Beiträge
 
Delphi 7 Personal
 
#7

Re: Umwandeln eines , zu . für Berechnung

  Alt 14. Sep 2007, 06:23
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!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Umwandeln eines , zu . für Berechnung

  Alt 14. Sep 2007, 07:40
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?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
tr909

Registriert seit: 5. Nov 2004
193 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Umwandeln eines , zu . für Berechnung

  Alt 14. Sep 2007, 07:55
Alternativ geht auch noch
Delphi-Quellcode:
while pos (',',s) <> 0 do
 s[pos(',',s)] := '.';
Gruß
tr909
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#10

Re: Umwandeln eines , zu . für Berechnung

  Alt 14. Sep 2007, 08:44
Hallo,

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

Gruß Hawkeye
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:12 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