Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Alles, was vor dem Komma steht, abschneiden (https://www.delphipraxis.net/4209-alles-vor-dem-komma-steht-abschneiden.html)

Stanlay Hanks 19. Apr 2003 17:18

Auch wenn du's schon hast, ich hätte das so gemacht.

Delphi-Quellcode:
function TForm1.KommaCut(Text : String) : String;
 var
 kpos,i: Integer;
 str  : String;
 begin
  kpos := pos(',',Text)+1;

  For i:= kpos to Length(Text) do begin
  str := str + Text[i];
  end;
  KommaCut := str;
  end;
Vielleicht hilft dir das ja trotzdem (wenn's funzt).

Bis dann, man ließt sich. Stanlay :hi:

d3g 19. Apr 2003 17:55

Böse, böse ;-) (weil: Ländereinstellungenabhängig (bei Dezimalpunkt statt Dezimalkomma bleibt der String so wie er ist), langsam (das sind Strings eben, HugeStrings - wie du sie benutzst - besonders)).

Stanlay Hanks 19. Apr 2003 18:07

Ich suche ja speziell nach dem Komma. Wenn man alles vor einem Dezimalpunkt löschen will, muss man das eben ändern. Oder hast du was anderes gemeint?

d3g 19. Apr 2003 18:12

Nein, genau das. Der Punkt (Wortspiel :mrgreen:) ist ja, dass der Entwickler nicht wissen kann, ob in dem String ein Dezimalpunkt, ein Dezimalkomma oder ein anderes Trennzeichen ist. FloatToStr() richtet sich nämlich nach der Länderzoneneinstellung. Man müsste umständlich über das Win32-API diese Einstellung herausfinden und da die ganze Funktion mit Sicherheit noch langsamer als das einfache int(frac(f) * 100) / 100 ist, ist davon ganz abzuraten.

Christian Seehase 19. Apr 2003 18:18

Moin Zusammen,

auch wenn's nur Daniels Variante gecodet ist:

Delphi-Quellcode:
  exValue := 0.77625;
  ShowMessage(IntToStr(Trunc(Frac(exValue)*100)));

@d3g
Zitat:

Zitat von d3g
Man müsste umständlich über das Win32-API diese Einstellung herausfinden...

Nein, muss man nicht ;-)

Delphi nimmt einem diese Arbeit beim Programmstart ab, und stellt das Zeichen in der Variablen DecimalSeparator zur Verfügung.
Solange niemand die Einstellung zwischen Programmstart und Anwendug der Variablen geändert hat stimmt der enthaltene Wert.

Stanlay Hanks 19. Apr 2003 18:20

Jetzt hab ich kapiert, was du meinst. Aber er hat ja geschrieben:
'Alles vor dem Komma löschen'. Aber du hast natürlich recht. Aber da ich nicht mal wüsste, wie man das mit der API macht, hab ich da gar nicht dran gedacht. Man liest sich, Stanlay. :coder:


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:20 Uhr.
Seite 2 von 2     12   

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