AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

MakeNumeric statt isNumeric

Ein Thema von Gustav.R · begonnen am 31. Dez 2011 · letzter Beitrag vom 3. Jan 2012
Antwort Antwort
Gustav.R
(Gast)

n/a Beiträge
 
#1

MakeNumeric statt isNumeric

  Alt 31. Dez 2011, 17:00
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
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#2

AW: MakeNumeric statt isNumeric

  Alt 31. Dez 2011, 18:15
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:
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;
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).
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#3

AW: MakeNumeric statt isNumeric

  Alt 31. Dez 2011, 19:59
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 !!

Geändert von gammatester (31. Dez 2011 um 20:02 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#4

AW: MakeNumeric statt isNumeric

  Alt 1. Jan 2012, 03:18
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Gustav.R
(Gast)

n/a Beiträge
 
#5

AW: MakeNumeric statt isNumeric

  Alt 3. Jan 2012, 17:45
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
  Mit Zitat antworten Zitat
Iwo Asnet

Registriert seit: 11. Jun 2011
313 Beiträge
 
#6

AW: MakeNumeric statt isNumeric

  Alt 3. Jan 2012, 18:04
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.
  Mit Zitat antworten Zitat
Gustav.R
(Gast)

n/a Beiträge
 
#7

AW: MakeNumeric statt isNumeric

  Alt 3. Jan 2012, 19:22
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.
Na un' nu'?

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
  Mit Zitat antworten Zitat
Gustav.R
(Gast)

n/a Beiträge
 
#8

AW: MakeNumeric statt isNumeric

  Alt 3. Jan 2012, 19:29
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.
Habe hier zwei Blondinen zum Testen, aber an zwei Kommas pro Edit habe ich echt nicht gedacht...



GG
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:15 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