![]() |
MakeNumeric statt isNumeric
function MakeNumeric(Str: string): string;
var I: Integer; s: string; begin s := ''; for i := 1 to Length(Str) do begin if str[i] in ['0'..'9', ','] then s := s + str[i]; end; Result := s; end; Der String wird an MakeNumeric bei mir nach einem Str := StringReplace(Str, '.', ',', [rfReplaceAll]); übergeben. Zweck des Unfugs: Zwei Strings (die "Zahlen" enthalten) miteinander vergleichen... HTH LG Gustav |
AW: MakeNumeric statt isNumeric
Sollte das in die Code-Library? IMO hat man das so schnell geschrieben, dass es nicht wirklich nötig ist, das aufzunehmen. Oder hast du vergessen, dein Problem zu beschreiben?
Hier aus Spaß eine vermutlich schnellere Variante, die das gleiche erledigt:
Delphi-Quellcode:
Wenn NormalizeDecSep True ist, werden alle Kommata/Punkte durch den aktuell eingestellten DecimalSeparator ersetzt, wodurch das StringReplace eingespart wird. Man sollte natürlich, je nachdem was man machen will, noch prüfen, ob eine valide Zahl herauskommt. Und eventuell sollte man Minus-Zeichen auch zulassen (s. Code).
function MakeNumeric(s: string; NormalizeDecSep: Boolean=False): string;
var i, j: Integer; WrongDecSep: Char; begin j := 0; if NormalizeDecSep then begin if DecimalSeparator='.' then WrongDecSep := ',' else WrongDecSep := '.'; end; for i := 1 to Length(s) do begin if NormalizeDecSep and (s[i]=WrongDecSep) then s[i] := DecimalSeparator; if (s[i] >= '0') and (s[i] <= '9') {or (s[i] = '-')} or (s[i] = DecimalSeparator) then begin inc(j); s[j] := s[i]; end; end; SetLength(s, j); Result := s; end; |
AW: MakeNumeric statt isNumeric
Da die Funktion mit Strings von Gleitkommazahlen arbeitet, ist es ein weiterer schwerer Fehler (neben dem schon erwähnten Vorzeichenverlust), wenn der Exponententeil verstümmelt wird: -1.234E-5 wird zu 12345 !!
|
AW: MakeNumeric statt isNumeric
Was soll denn wie verglichen werden?
Und was genau soll MakeNumeric denn eigentlich machen? 12,345,678.9 würde in 12,345,6789 umgewandelt Aus "abc123,456,789 def -19 xyz" wird 123,456,789-19 was ja auch nicht ganz ok aussieht. |
AW: MakeNumeric statt isNumeric
Natürlich soll das nicht in die Code-Library! Deshalb auch unter K&T!
Und was Euere neueren Delphis können, finde ich ECHT super! Ist für mich allerdings kein Argument für ein sauteures Update/Upgrade, wenn sich Funktionen recht einfach Nachprogrammieren lassen. Leute Leute, kauft einfach jedes Update oder Upgrade! Nur DAMIT werdet ihr vom Deppen zum Profi - einfach nur immer wieder Updates oder Upgrades kaufen! GG |
AW: MakeNumeric statt isNumeric
Dieser Beitrag bewirkt, das ein ziemlich großes Fragezeichen über meinem Kopf schwebt.
Es stört zwar nicht, macht aber komische Geräusche, wenn ich durch die Tür gehe. |
AW: MakeNumeric statt isNumeric
Zitat:
Woas I anet! Beim Mitlesen in der DP bekomme ich Tipps und Tricks mit, die mir oft weiterhelfen. Dein Problem dürfte ein Tinitus sein? Oder hast Du was gegen pascalnähere Lösungen, die nicht auf die neueren/neuesten Delphiversionen beruhenen? GG |
AW: MakeNumeric statt isNumeric
Zitat:
:oops::thumb: GG |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:52 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