Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi StringReplace (https://www.delphipraxis.net/102374-stringreplace.html)

qb-tim 27. Okt 2007 09:50


StringReplace
 
Hi,

mein Delphi benutzt in Decimalzahlen Komma. Ich habe eine Funktion, in der die Eingaben auf ihrer Gültigkeit überprüft werden, wobei aber auch Punkte in Decimalzahlen zugelassen werden sollen:

Delphi-Quellcode:
function ValidateNumber(s: String): Boolean;
var i: Integer;
    t: Real;
begin
  Result := True;
  for i := 1 to Length(s) do
    if s[i] in ['-', '0'..'9', '.', ','] = False then
      Result := False;
  StringReplace(s, '.', ',', [rfReplaceAll]);
  try
    t := StrToFloat(s);
  except
    Result := False;
  end;
end;
Wenn aber s z.B. '0.5' ist, dann liefert StrToFloat(s) einen Fehler, obwohl StringReplace eigentlich den Punkt in einen Komma hätte verwandeln sollen. :wall:

Mit einem Schritt-für-Schritt durchlauf der Funktion habe ich bemerkt, dass nach StringReplace s immer noch Punkte enthält!

Was ist schief gegangen? :gruebel:

mkinzler 27. Okt 2007 09:54

Re: StringReplace
 
Schau dir mal die Konstanten DecimalSeparator und ThousandSeparator oder die uberladenen Versionen der Konvertierungsrotinen mit Foramtangabe an.

qb-tim 27. Okt 2007 09:56

Re: StringReplace
 
@mkinzler: Das weiß ich, aber mich wundert trotzdem, warum der StringReplace nicht funzt! :gruebel:

mkinzler 27. Okt 2007 09:59

Re: StringReplace
 
Wenn du das weist, warum dann der Umstand?
Was bezweckst du mit der Schleife?
Dein Aufruf von StringReplace änder ja nichts, da du den Rückgabewert verwirfst:
Delphi-Quellcode:
s := StringReplace(s, '.', ',', [rfReplaceAll]);

qb-tim 27. Okt 2007 10:02

Re: StringReplace
 
:oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops:

Ich kann es nicht glauben, dass ich das vergessen habe! Und dann auch mehrmals übersehen!

(Na ja, kann schon mal passieren.... :roll: )


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