Verfasste Forenbeiträge
-
AutorBeiträge
-
Ich nutze relativ häufig die “set the numberformat to …”-Funktion. Allerdings arbeitet diese nur mit Dezimalpunkten und keinen Tausenderzeichen.
Im angefügten Code-Beispiel gibt es ein Feld “werte”, in welchem Dezimalzahlen mit Punkt oder Komma als Dezimalzeichen in je einer Zeile stehen. Das Ergebnis soll im Feld “summ” mit Komma als Dezimalzeichen erscheinen.
Das Problem hier ist, dass Zahlenformat sehr unterschiedlich sein können und man nicht 100%ig wissen kann, welches Zahlenformat gerade verwendet wird. Man könnte die Einstellungen im Computer abfragen oder der Anwender müsste vorgeben, welche Zahlenformat er verwendet. Es sollte diese dann nicht mehr mischen.
Schweiz: Dezimalpunkt und Hochkomma als Tausenderzeichen 1’000’000.00
Deutschland: Dezimalkomma und Punkt als Tausenderzeichen 1.000.000,00
USA: Dezimalpunkt und Komma als Tausenderzeichen 1,000,000.00Das kann zu unerwarteten Ergebnissen und Fehlermeldungen führen, wenn gleichzeitig verschiedene Zahlenformate verwendet werden (müssen). LiveCode selbst verwendet die Zahlenformat, wie sie in der Computersprache C vorgegeben sind, da LiveCode auch auf der Sprache Objective-C beruht.
Es käme also jetzt noch eine Funktion hinzu, die Tausenderzeichen einsetzt oder entfernt, je nach verwendetem Zahlenformat und Situation.
Probleme entstehen hier häufig auch dann, wenn solche Daten exportiert werden und in einem anderen Land dann die Zahlen nicht mehr funktionieren.
on mouseUp local tSumme=0 --- set the numberformat to "#.00" /* Das Ausgabeformat der Zahl */ --- put "0.00" into field "summe" put calcSum (field "werte" ) into tSumme --> Funktion im gleichen Script put tSumme * 1 into field "summe" /* eine Multiplikation mit 1 erzeugt das gewünschte Zahlenformat */ put replaceText ( tSumme, "\." , comma ) into tSumme ## Die 'replaceText'-Funktion ist eine Regex-Funktion und ## verwendet den Punkt in der eigenen Syntax. ## Daher muss der Punkt hier mit dem Backslash-Charakter markiert ## werden, damit er nicht als Regex-Zeichen '\' verwendet wird. ## Das ist das sogenante 'Escape'-Zeichen.'*/ /* Eine Alternative zu anderen Alternativen: */ --- replace "." with comma in tSumme */ put tSumme into field "summe" end mouseUp function calcSum pField ## Die Funktion addiert Zahlen in einer Zahlenliste, ## die mit einem Punkt oder Komma als Dezimalzeichen verwendet werden. local tSum=0 local tLine="" --- put replaceText ( pField, comma , "." ) into pField --- repeat for each line tLine in pField if tLine is a number then add tLine+0 to tSum end if end repeat --- return tSum /* Das Ergebnis ist eine Zahl mit Dezimalpunkt */ end calcSum
Juni 2, 2018 um 19:36 Uhr als Antwort auf: Herzlich willkommen im deutschsprachigen LiveCode-Forum #5914Ich würde mich freuen, wenn mehr Beiträge erscheinen würden !)
Eine Anmerkung: Auf meinem Mobiltelefon werden Beiträge abgeschnitten angezeigt (Chrome, Samsung 7), wenn man eigene Beiträge auf dem Mobilgerät verfasst. Das ist schade beim Schreiben von Beiträgen unterwegs.
-
AutorBeiträge