![]() |
Auch wenn du's schon hast, ich hätte das so gemacht.
Delphi-Quellcode:
Vielleicht hilft dir das ja trotzdem (wenn's funzt).
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; Bis dann, man ließt sich. Stanlay :hi: |
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)).
|
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?
|
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.
|
Moin Zusammen,
auch wenn's nur Daniels Variante gecodet ist:
Delphi-Quellcode:
exValue := 0.77625;
ShowMessage(IntToStr(Trunc(Frac(exValue)*100))); @d3g Zitat:
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. |
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 05:40 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